RecyclerView两列分别放在左右两边,中间分隔

RecyclerView实现两列分别放在左右两边,中间分隔
由于要实现购物车功能,效果是如图:
这里写图片描述
写到随便逛逛布局时遇到问题:item只有中间有分隔,左右与屏幕是没有间隙的。

随便逛逛布局:layout_ramble.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_margin="10dp"
    android:layout_height="wrap_content"
    android:background="@color/colorAccent"
    android:id="@+id/rl_ramble"
    >

    <ImageView
        android:id="@+id/iv_ramble"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/ic_launcher"
        android:scaleType="fitXY"
        />

</RelativeLayout>

只放了一张图片,根部句为RelativeLayout。
解决:利用LayoutParams,在逻辑代码中设置。
1.在RecyclerView的Adapter中定义两个RelativeLayout.LayoutParams,用户来设置Item两边的布局样式

private RelativeLayout.LayoutParams mRambleRLLeftParams,mRambleRLRightParams;

2.实例化LayoutParams

mRambleRLLeftParams = new RelativeLayout.LayoutParams(MockData.getScreenWidth(context) /2-10,MockData.getScreenWidth(context) / 2-10);
mRambleRLRightParams = new RelativeLayout.LayoutParams(MockData.getScreenWidth(context) /2-10,MockData.getScreenWidth(context) / 2-10);

上边MockData.getScreenWidth(context)方法获取屏幕宽度,RelativeLayout.LayoutParams第一个参数设置控件宽度,第二个参数设置控件高度。
封装的获取屏幕宽高的方法:

 /**
     * 获取屏幕宽高
     * @param context
     * @return
     */
public static int getScreenWidth(Context context){
        return ((WindowManager)context.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay().getWidth();
    }
public static int getScreenHeight(Context context){
        return ((WindowManager)context.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay().getHeight();
    }

3.设置LayoutParams:根据自己代码的逻辑,判断左右两边position

                //设置右边Item的左margin值为10像素
                mRambleRLLeftParams.leftMargin = 10;
                //设置左边Item的右margin值为10像素
                mRambleRLRightParams.rightMargin = 10;
                //若判断为左边item
                if(position%2 == 0){
                    holder.mRambleRL.setLayoutParams(mRambleRLRightParams);
                }else {
                    holder.mRambleRL.setLayoutParams(mRambleRLLeftParams);
                }

效果:
这里写图片描述

遇到的问题:开始想到用一个LayoutParams来做,在代码中判断position,然后设置LayoutParamas是左边设置margin还是右边设置margin,运行结果每个item设置的margin都是左或者都是右。我这里还嵌套了购物车的功能,所以还要理清头绪。

代码包括了实现购物车、随便逛逛、RecyclerView多布局嵌套、CheckBox,内容挺多的,全部用的小机器人,丑。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值