CardBackgroundColor и cardCornerRadius не работают в AndroidX

Я борюсь с радиусом угла CardView и цветом фона с библиотеками AndroidX.

Я определил свой макет, как показано ниже:

<?xml version = "1.0" encoding = "utf-8"?>
<androidx.cardview.widget.CardView
        xmlns:android = "http://schemas.android.com/apk/res/android"
        xmlns:app = "http://schemas.android.com/apk/res-auto"
        xmlns:tools = "http://schemas.android.com/tools"
        xmlns:card_view = "http://schemas.android.com/apk/res-auto"
        android:layout_width = "@dimen/retail_card_width"
        card_view:cardCornerRadius = "@dimen/card_radius"
        card_view:cardBackgroundColor = "@color/baseYellow"
        android:layout_height = "@dimen/retail_card_height">
    <androidx.constraintlayout.widget.ConstraintLayout
            android:layout_width = "match_parent"
            android:layout_height = "match_parent">
        <ImageView android:layout_width = "match_parent" android:layout_height = "match_parent"
                   tools:src = "@drawable/ic_fruit_1"
                   app:layout_constraintBottom_toBottomOf = "parent" app:layout_constraintEnd_toEndOf = "parent"
                   app:layout_constraintStart_toStartOf = "parent"
                   android:scaleType = "fitEnd"
                   app:layout_constraintTop_toTopOf = "parent"/>
        <ImageView
                android:id = "@+id/ivRetailBrand"
                android:layout_width = "@dimen/brand_icon_size"
                android:layout_height = "@dimen/brand_icon_size"
                tools:src = "@drawable/esselunga"
                android:layout_marginTop = "@dimen/retail_brand_margin"
                android:background = "@drawable/round_outline"
                app:layout_constraintTop_toTopOf = "parent" app:layout_constraintStart_toStartOf = "parent"
                android:layout_marginStart = "@dimen/retail_brand_margin"/>
    </androidx.constraintlayout.widget.ConstraintLayout>
</androidx.cardview.widget.CardView>

К сожалению, ни cardCornerRadius, ни cardBackgroundColor не работают в моем макете. Я не могу понять, зависит ли моя проблема от библиотек AndroidX или нет.

Вот мой предварительный просмотр макета:

CardBackgroundColor и cardCornerRadius не работают в AndroidX

Я пробовал выше, не могу воспроизвести ту же проблему. Я только что перенес свой демонстрационный проект на AndroidX.

Anmol 01.07.2019 15:05
4
1
8 715
11
Перейти к ответу Данный вопрос помечен как решенный

Ответы 11

Попробуйте изменить CardView как:

<androidx.cardview.widget.CardView
        xmlns:android = "http://schemas.android.com/apk/res/android"
        xmlns:app = "http://schemas.android.com/apk/res-auto"
        xmlns:tools = "http://schemas.android.com/tools"
        android:layout_width = "@dimen/retail_card_width"
        app:cardCornerRadius = "@dimen/card_radius"
        app:cardBackgroundColor = "@color/baseYellow"
        android:layout_height = "@dimen/retail_card_height">

@NicolaGalazzi, какая у вас версия androidx?

Deˣ 01.07.2019 15:09

androidx.cardview:карточка:1.0.0

Nicola Gallazzi 01.07.2019 15:10

Вы пробовали на реальном устройстве? Это может быть ошибка кэширования, которая исчезнет после запуска.

Deˣ 01.07.2019 15:12

Я не думаю, что это связано с настройкой CardView.

Проверьте свой ImageView, они могут быть причиной того, что угол не округляется.

Закомментируйте код просмотра изображения (весь ConstraintLayout) и проверьте пользовательский интерфейс. Поскольку у меня была такая же проблема в прошлом.

вы правы, без кода ImageView работает нормально. но как я могу решить эту ошибку?

Pratik PSB 11.05.2021 15:42
Ответ принят как подходящий

Оказалось, что проблема заключалась в том, что я смешивал библиотеку androidx cardview с библиотекой поддержки recyclerview. Однажды я перестроил проект с помощью:

implementation 'androidx.recyclerview:recyclerview:1.0.0'
implementation 'androidx.cardview:cardview:1.0.0'

все оказалось хорошо.

это все равно

Malith Ileperuma 15.03.2020 09:04

Я обновил скомпилироватьSdkVersion с 28 до 29 на уровне приложения, и проблема решена.

compileSdkVersion 29

Я могу опоздать на это, но позвольте мне сэкономить чье-то время в будущем. У меня была эта проблема на моем Android Studio preview, и я понял, что проблема в том, что содержимое внутри CardView не находится clipped в границах CardView, поэтому углы, которые вы видите, являются углами ImageView, которые фактически обрезаются, когда вы запускаете приложение на эмуляторе/устройстве.

Надеюсь, это поможет!

Я удалил эти строки в своем файле манифеста, и после этого мои карты работают отлично.

android:hardwareAccelerated = "false"

спасибо сработало для меня

Zeeshan Ali 16.03.2022 10:49

Вы можете создать новый файл для рисования round_corner_colored.xml и вставить в него следующий код:

<?xml version = "1.0" encoding = "utf-8"?>
<shape xmlns:android = "http://schemas.android.com/apk/res/android">

<solid
    android:color = "@color/light_sky_blue"/>

<corners
    android:radius = "@dimen/_12sdp"/>

</shape>

Теперь установите этот рисуемый фон карты как:

 android:background = "@drawable/round_corner_colored"

Надеюсь поможет!!

попробуйте очистить и пересобрать проект. Это сработало для меня.

У меня была похожая проблема. Я решил это, обернув CardView в FrameLayout.

Есть бренды, которые заставляют Dark mode, когда приложение устанавливается в первый раз, это повлияет на окраску представлений, и применение цвета в CardView будет игнорироваться. Вы можете применить это к своей основной теме, чтобы предотвратить такое событие.

<item name = "android:forceDarkAllowed" tools:targetApi = "q">false</item>

Для меня это не отображалось должным образом в предварительном просмотре. Но он правильно отображался на устройстве. Есть некоторые проблемы с рендерингом. Я продолжаю сталкиваться с такими проблемами в студии Android.

Столкнулся с проблемой в Android Studio 4.2.1 (Mac)

Другие вопросы по теме