【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鏈接

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章