【Android】ScrollMenuLayout使用说明
本文为 【Android】一个低入侵的RecyclerView滑动菜单控件-ScrollMenuLayout的使用说明。
如何快速的为旧项目添加侧滑菜单:
这里我用我之前写的一个项目来做例子,给大家展示一下如何快速的为旧项目添加侧滑菜单的功能。
这是未加侧滑菜单时的样子:
现在我的想法是想给每一个文章都加上滑动菜单,然后菜单中可以将文章进行收藏。
1、导入ScrollMenuLayout到项目中
在project目录下的build.gradle中配置:
allprojects { repositories { ... maven { url 'https://jitpack.io' } }}
然后去到model(大部分为app)下的build.gradle中添加依赖:
implementation 'com.github.d745282469:ScrollMenuLayout:1.1'
2、新建侧滑菜单布局xml
由于没有啥审美,所以就随便写写好了。需要注意的是,我们的按钮最终将放到的地方是Item中,所以我们的高度基本都是跟着填满父容器的,宽度则为跟随内容宽度。也正是由于此,我们在xml中预览的效果肯定不是那么好,但是不用担心,最终添加完成后的效果肯定是预期的。
3、在Adapter中,修改原有的布局
原有的是这样子的:
... @NonNull @Override public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { View view = LayoutInflater.from(context).inflate(R.layout.item_home_article, parent, false); return new ViewHolder(view); } ...
我们修改的话只需要将new ViewHolder(view)中的view修改为我们的ScrollMenuLayout即可,修改后:
... @NonNull @Override public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { //注意将LayoutInflater的第二个参数设为Null View view = LayoutInflater.from(context).inflate(R.layout.item_home_article, null, false); ScrollMenuLayout scrollMenuLayout = new ScrollMenuLayout(context,null); //设置item布局 scrollMenuLayout.setItemView(view); //设置侧滑菜单布局 scrollMenuLayout.setRightMenuView(LayoutInflater.from(context).inflate(R.layout.item_menu_home_article,null)); //将ScrollMenuLayout替换原本的view return new ViewHolder(scrollMenuLayout); } ...
这样,我们就为老项目的item加上了侧滑效果啦。
可以看到,我们已经为item添加上了侧滑菜单了,但是我们原本的item间的间隔却消失了。这是由于我们的间隔是设置给item的,而现在Item却被我们的ScrollMenuLayout给包裹了,那么自然,这个间隔也就无法起作用了。其他相关的属性也是如此,只要是涉及到相邻Item之间的属性,我们都需要重新设置给ScrollMenuLayout,这也是不足之处吧。我们再修改一下:
... @NonNull @Override public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { //注意将LayoutInflater的第二个参数设为Null View view = LayoutInflater.from(context).inflate(R.layout.item_home_article, null, false); ScrollMenuLayout scrollMenuLayout = new ScrollMenuLayout(context,null); //设置item布局 scrollMenuLayout.setItemView(view); //设置侧滑菜单布局 scrollMenuLayout.setRightMenuView(LayoutInflater.from(context).inflate(R.layout.item_menu_home_article,null)); //设置marginBottom,代码中的是px,所以我们需要将dp转换为px int bottom = UnitUtil.dip2px(context,15);//原本的为15dp,这里转换成px FrameLayout.LayoutParams layoutParams = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT); layoutParams.setMargins(0,0,0,bottom); scrollMenuLayout.setLayoutParams(layoutParams); //将ScrollMenuLayout替换原本的view return new ViewHolder(scrollMenuLayout); } ...
到此,我们就为老项目加上了侧滑菜单效果啦。
其实总共的步骤就:1、新建侧滑菜单布局文件 2、将原有的Item布局添加到ScrollMenuLayout中,并用ScrollMenuLayout去替换之前的Item 3、将原来设置给Item布局的一些属性迁移给ScrollMenuLayout,比如一些margin啊之类的。
ScrollMenuLayout的GitHub链接
更多相关文章
- 没有一行代码,「2020 新冠肺炎记忆」这个项目却登上了 GitHub 中
- 不吹不黑!GitHub 上帮助人们学习编码的 12 个资源,错过血亏...
- 【Cocos2d-X(2.x) 游戏开发系列之二】cocos2dx最新2.0.1版本跨平
- Android文字自动轮播实现
- 【Android(安卓)源码解析】浅谈DecorView与ViewRootImpl
- Android成长之路之layout加载过程
- 【最新】汇总Android(安卓)Studio 2.2 给我们带来的十大新功能
- Android中库项目、jar包等的使用方法
- 直接拿来用!最火的Android开源项目(完结篇)