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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值