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

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

随便逛逛布局:layout_ramble.xml


<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);
                }

效果:
RecyclerView两列分别放在左右两边,中间分隔_第2张图片

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

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

你可能感兴趣的:(Android知识)