回收站视图中自动调整图像卡视图

问题描述 投票:0回答:2

我正在努力

RecyclerView
CardView
中显示图像。

我使用

GridLayoutManager
并且我在每行中指定了3个项目:

mLayoutManager = new GridLayoutManager(context,3);

问题: 图像在我的测试设备的卡片视图中为

perfectly fitted
。但是如果我在比我的测试设备小的设备中测试它,卡片视图的右侧会变得
trimmed

如果我减少卡片视图的宽度以适应小型设备,那么我可以在较大的屏幕中看到右侧有更多的边距。

我的问题:

如何设计我的 xml 布局以同时适用于小屏幕和大屏幕?即我不希望卡片视图的右侧边缘在较小的设备中被修剪。

Grid_item.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>

RecyclerView.xml

<android.support.v7.widget.RecyclerView
    android:id="@+id/recycler_view"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_below="@+id/seperator"
    android:columnWidth="100dp"
    android:padding="10dp"/>
android android-layout android-recyclerview
2个回答
1
投票

问题来自于你的

CardView
的大小。小屏幕中的
cardView
RecyclerView
的项目更大。您的
reyclerView's item width
是根据
recyclerWidth/yourSpanCount
计算的(在您的代码中为 3)。因此,我建议您可以使用不同的尺寸来实现不同的屏幕尺寸。
为了实现这一点,您不应该在 xml 中声明特定的尺寸:

cardView

。您可以更改如下:

android:layout_height="120dp"
然后你可以在额外的文件夹中声明
android:layout_height="@dimen/imageWidth"
,例如:
dimens
values-xlarge/dimens.xml
,甚至可以使用
values-small/dimens.xml
,如果我没记错的话。
    


0
投票
支持多屏幕

您可以为不同的设备使用多个dimens.xml

© www.soinside.com 2019 - 2024. All rights reserved.