如何根据屏幕尺寸设置回收站视图项目的宽度尺寸?

时间:2019-03-30 10:21:36

标签: android android-recyclerview

我希望我的RecyclerView项目的宽度和高度相等,并根据屏幕尺寸动态更改其尺寸吗?

请问我该如何做任何建议或示例代码?

这是我的代码:

    mrv = findViewById(R.id.rv_segments);
    list = new ArrayList<>();
    mAdapter = new SegmentsAdapter(this, list,station.getWidthCount());

    //mAdapter.setOnItemClickListener(this);

    mLayoutManager = new LinearLayoutManager(getApplicationContext());
    mLayoutManager = new GridLayoutManager(getActivity(), station.getWidthCount());


    mrv.setLayoutManager(mLayoutManager);
    mrv.setAdapter(mAdapter);

这是我的适配器:

public SegmentsAdapter.BaseHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    View view1 = LayoutInflater.from(context).inflate(R.layout.recyler_item_segments,parent,false);
    BaseHolder viewHolder1 = new BaseHolder(view1);
    return viewHolder1;
}

我的回收站项目xml如下:

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="@drawable/custom_ln_border"
    android:padding="2dp">
<LinearLayout
    android:id="@+id/ln"
    android:layout_width="100dp"
    android:layout_height="100dp"
    android:scaleType="centerCrop"
    android:orientation="horizontal"
    android:background="@color/menu3"
    />
</LinearLayout>

2 个答案:

答案 0 :(得分:2)

请在recyclerview项目内使用ConstraintLayout。约束已更新,并且优于相对和线性布局。约束布局将根据屏幕自动调整...

答案 1 :(得分:1)

您的Recyclerview应该使用一个其中指定了列跨度大小的LayoutManager。 就像这样:

mList.setLayoutManager(new GridLayoutManager(getContext(), 2));

所以现在您只需要管理项目的高度。对? 可以做到:

@Override
public myViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
  View myView = inflater.inflate(R.layout.item_home, parent, false);
  GridLayoutManager.LayoutParams params = (GridLayoutManager.LayoutParams) myView.getLayoutParams();
  params.height = (parent.getMeasuredHeight() / 2) - dim24;
  myView.setLayoutParams(params);
  return new myViewHolder(myView);
}

所以。 您可以在此(parent.getMeasuredHeight() / 2) - dim24上调整视图“ HEIGHT”

dim24只是一个填充整数,您可以摆脱它

注意,我使用了“ 2”列,因此我将“高度”划分为“ 2”