我正在使用RecyclerView
来显示CardView
中的图像。
我使用GridLayoutManager
并且我在每行中指定了3个项目:
mLayoutManager = new GridLayoutManager(context,3);
问题:我的测试设备卡片视图中的图片为perfectly fitted
。但是如果我在比我的测试设备小的设备上测试它,那么cardview的右侧正在{{{} 1}}。
如果我减小了卡片视图中的宽度以适应小型设备,那么我可以在更大的屏幕中看到右侧更多的边距。
我的问题:
如何设计我的xml布局以适用于小屏幕和大屏幕?即我不希望cardview的右侧边缘在较小的设备中被修剪。
Grid_item.xml
trimmed
的 RecyclerView.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<android.support.v7.widget.CardView
android:layout_width="90dp"
android:layout_height="wrap_content"
card_view:cardCornerRadius="3dp"
android:layout_marginTop="5dp"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp"
card_view:cardElevation="0.01dp"
android:layout_marginBottom="0dp"
card_view:cardBackgroundColor="#E7A423"
>
<RelativeLayout
android:id="@+id/top_layout"
android:layout_width="90dp"
android:layout_height="120dp"
android:background="#000000"
android:layout_gravity="center">
<ImageView
android:id="@+id/img_thumbnail"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:adjustViewBounds="true"
android:scaleType="fitXY"
/>
</RelativeLayout>
</android.support.v7.widget.CardView>
答案 0 :(得分:1)
问题来自CardView
的大小。小屏幕中的cardView
大于RecyclerView
项。您的reyclerView's item width
根据recyclerWidth/yourSpanCount
(代码中的3)进行计算。因此,我建议您可以为差异屏幕大小cardView
使用差异大小。
要归档它,你不应该在xml:android:layout_height="120dp"
中声明特定的维度。您可以更改:android:layout_height="@dimen/imageWidth"
。
然后你可以在额外的文件夹中声明dimens
,如:values-xlarge/dimens.xml
,values-small/dimens.xml
或甚至smallest width
,如果我不错过的那样。
答案 1 :(得分:0)
这可能对你有所帮助=&gt; Supporting Multiple Screens
您可以为不同的设备使用多个dimens.xml