我有一个RecyclerView,其元素需要以4列显示。我通过GridLayoutManager执行此操作,如下所示:
mActivityBinding.bwRv.setAdapter(mAdapter);
GridLayoutManager gridLayoutManager = new GridLayoutManager(MysActivityTwo.this, 4);
mActivityBinding.bwRv.setLayoutManager(gridLayoutManager);
我的个别项目布局如下所示:
<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:layout_width="@dimen/bw_items_width"
android:layout_height="100dp"
android:layout_alignEnd="@+id/bw_et_questions"
android:layout_alignStart="@+id/bw_et_questions"
android:layout_below="@+id/bw_et_questions"
android:clickable="true"
android:foreground="?android:attr/selectableItemBackground"
card_view:cardCornerRadius="2dp"
app:optCardBackgroundColor="@color/dark_font"
card_view:cardElevation="2dp">
</android.support.v7.widget.CardView>
所以它有固定的高度和宽度。
在Normal较大的屏幕中正确显示,但在较小的屏幕中,列相互重叠。有没有什么方法可以指定通常在较大的屏幕中它应该拾取4列但在较小的屏幕中它应该以某种方式包裹而不重叠?
答案 0 :(得分:0)
您可以根据屏幕尺寸定义布局。请参阅此link
对于大屏幕,您可以在res / layouts / layout-large中定义布局,在res / layout中定义小布局。
答案 1 :(得分:0)
使用此代码分隔Gridview的项目。为间距创建一个类
int spacingInPixels = getResources().getDimensionPixelSize(R.dimen.spacing);
recyclerView.addItemDecoration(new SpacesItemDecoration(spacingInPixels));
并将其设置在您的RecyclerView上。
<dimen name="spacing">2dp</dimen>
将它放在dimens.xml上
{{1}}