本文为 【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啊之类的。