本文爲 【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啊之類的。