CardView在不同的屏幕密度下无法正确显示?

时间:2019-08-18 01:34:26

标签: java android xml cardview

我有一个具有Cardviews的ViewPager,cardviews在某些设备上可以正确显示,但大多数情况下只能显示很薄。 ViewPager在一个片段中。

我正在使用LinearLayout来CardView定义,我尝试了Relative,但是我遇到了同样的问题。

https://ibb.co/kyNF5Yz“来自不同设备的示例”

Item.xml https://gist.github.com/Bryan9797/1eda5e7d02d1a12140115a539f164e3e

Fragment_bateria.xml https://gist.github.com/Bryan9797/b5d7b16a6d0599b7fd7f593226a4523d

activity_main.xml https://gist.github.com/Bryan9797/632461d73286afa5493167048b8e19c0

我希望在其他设备上正确显示Cardview。

1 个答案:

答案 0 :(得分:0)

您可以将sdp库用于所有设备的响应XML。

https://github.com/intuit/sdp
您可以在gradle中安装此依赖项,并将此sdp代替dp。 您可以在XML布局中设置此sdp并将高度设置为wrap_content,如下所示:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="center_vertical">
    <androidx.cardview.widget.CardView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="@dimen/_5sdp"
        app:cardCornerRadius="@dimen/_20sdp">
        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
            <ImageView
                android:id="@+id/image"
                android:layout_width="match_parent"
                android:layout_height="@dimen/_350sdp"
                android:scaleType="centerCrop"
                android:src="@color/colorAccent" />
            <TextView
                android:id="@+id/title"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@id/image"
                android:layout_marginLeft="@dimen/_15sdp"
                android:layout_marginTop="10dp"
                android:text="Escritorio ejecutivo"
                android:textColor="#262626"
                android:textSize="@dimen/_20ssp" />
            <TextView
                android:id="@+id/desc"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@id/title"
                android:layout_marginLeft="@dimen/_15sdp"
                android:layout_marginTop="@dimen/_3sdp"
                android:layout_marginRight="@dimen/_15sdp"
                android:drawablePadding="@dimen/_10sdp"
                android:ellipsize="end"
                android:maxLines="4"
                android:text="Escritorio ejecutivo"
                android:textSize="@dimen/_15ssp" />
        </RelativeLayout>
    </androidx.cardview.widget.CardView>
</LinearLayout>