Tôi đang sử dụng StaggeredGridLayoutManager dọc để hiển thị một số hình thu nhỏ. Mỗi hàng có một cardview với chiều rộng 1 inch và chiều cao 150dp. Câu hỏi của tôi là Làm thế nào tôi có thể thiết lập số lượng khoảng trống lưới so le để sử dụng chiều rộng vật lý có sẵn của màn hình?Làm thế nào để thiết lập số lượng khoảng trống lưới so le để sử dụng chiều rộng màn hình có sẵn?
CardViewRow.xml
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:orientation="vertical"
card_view:cardCornerRadius="0dp"
card_view:cardUseCompatPadding="true" >
<LinearLayout
android:gravity="center"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/card_selector"
android:orientation="vertical">
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/thumbnail"
android:layout_width="300dp"
android:layout_height="150dp"
android:scaleType="centerCrop"/>
<LinearLayout
android:weightSum="2"
android:padding="5dp"
android:layout_gravity="bottom"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:background="#80000000">
<TextView
android:id="@+id/size_txt"
android:layout_weight="1"
android:textSize="12sp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/silver"
android:gravity="left"/>
<TextView
android:layout_weight="1"
android:gravity="right"
android:textColor="@color/silver"
android:id="@+id/time_txt"
android:textSize="12sp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>
<View
android:id="@+id/selector"
android:visibility="invisible"
android:background="#950096ff"
android:layout_width="match_parent"
android:layout_height="match_parent">
</View>
</FrameLayout>
<TextView
android:id="@+id/title_txt"
android:padding="8dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:maxLines="5" />
</LinearLayout>
</android.support.v7.widget.CardView>
Hiện nay tôi đang sử dụng mã này. (Điểm Uy Tín: mstrengis)
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
int cardWidth =(int) metrics.xdpi; //CardWidth==1Inch.
int spans = (int) Math.floor(mRecyclerView.getContext().getResources().getDisplayMetrics().widthPixels/(float) cardWidth);
sglm.setSpanCount(spans);
/* Đây hoạt động hoàn hảo trên mối quan hệ của tôi và 5 tab samsung, Nhưng trên điện thoại lenovo tôi chiều rộng thẻ nhỏ hơn 1.5cm và đếm khoảng thời gian là nhiều hơn những gì tôi mong đợi * /.
có bạn kiểm tra phát triển doc android cho bố trí này? [StaggeredGridLayoutManager] (https://developer.android.com/reference/android/support/v7/widget/StaggeredGridLayoutManager.html) hãy xem chức năng này setGapStrategy (int) – HMG