图片在Cardvew中时不显示

问题描述

下面是我的代码

<androidx.cardview.widget.CardView
        android:id="@+id/cv_back"
        android:layout_width="@dimen/walletFuncFrameSize"
        android:layout_height="@dimen/walletFuncFrameSize"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        android:layout_marginTop="24dp"
        android:layout_marginStart="24dp"
        app:cardCornerRadius="250dp">

        <androidx.cardview.widget.CardView
            android:layout_width="@dimen/walletFuncSize"
            android:layout_height="@dimen/walletFuncSize"
            app:cardCornerRadius="250dp"
            android:layout_gravity="center">

            <ImageView
                android:layout_width="@dimen/walletFuncImageSize"
                android:layout_height="@dimen/walletFuncImageSize"
                android:background="@drawable/back"
                android:scaleType="centerCrop"
                android:layout_gravity="center" />

        </androidx.cardview.widget.CardView>
    </androidx.cardview.widget.CardView>

当我使用Android 10手机进行测试时,它可以正常工作,没有问题。但是,当我使用Android 8.0手机进行测试时,该图像不会显示

我试图删除所有cardview,但仅保留imageView,最终显示图片

有人知道如何解决此问题吗?

我也尝试过:

  1. src和srcCompat以及ImageView的背景
  2. 将androidx.cardview.widget.CardView都更改为com.google.android.material.card.MaterialCardView
  3. 删除一个CardView

解决方法

在名片视图中放置一个布局,并使图像视图成为其子视图:

<androidx.cardview.widget.CardView
        android:id="@+id/cv_back"
        android:layout_width="@dimen/walletFuncFrameSize"
        android:layout_height="@dimen/walletFuncFrameSize"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        android:layout_marginTop="24dp"
        android:layout_marginStart="24dp"
        app:cardCornerRadius="250dp">

        <LinearLayout
            android:layout_width="@dimen/walletFuncSize"
            android:layout_height="@dimen/walletFuncSize"
            android:background="@drawable/oval"
            android:orientation=vertical
            android:layout_gravity="center">

            <ImageView
                android:layout_width="@dimen/walletFuncImageSize"
                android:layout_height="@dimen/walletFuncImageSize"
                android:background="@drawable/back"
                android:scaleType="centerCrop"
                android:layout_gravity="center" />

        </LinearLayout>
    </androidx.cardview.widget.CardView>

@ drawable / oval:

<shape android:shape="oval" xmlns:android="http://schemas.android.com/apk/res/android">

    <solid android:color="@color/colorPrimary" />
</shape>
,

尝试从内部卡片视图和/或两者中删除半径。 如果您看到图像,则需要减小半径或增大卡片视图的大小。

未显示ImageView,因为两个卡片视图中的半径都太大,并且卡片视图可能不够大,因此半径与图像重叠。

,

如果要以圆形显示图像

Material Design lib提供import clka print(dir(clka)) 来创建任何您想要的形状,而无需任何自定义形状

例如:

ShapeableImageView

style.xml 中定义样式:

<com.google.android.material.imageview.ShapeableImageView
                android:id="@+id/ivSchoolIcon"
                android:layout_width="56dp"
                android:layout_height="56dp"
                android:adjustViewBounds="true"
                android:padding="2dp"
                android:scaleType="centerCrop"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toTopOf="parent"
                app:shapeAppearanceOverlay="@style/circleImageView"
                app:srcCompat="@drawable/ic_kid_placeholder" />

依赖项:

 <style name="circleImageView" parent="">
        <item name="cornerFamily">rounded</item>
        <item name="cornerSize">50%</item>
        <item name="android:shadowRadius">100</item>
        <item name="android:shadowColor">@color/gray</item>
        <item name="backgroundOverlayColorAlpha">12</item>
    </style>

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...