我希望我的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>
答案 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”