Я борюсь с радиусом угла 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 или нет.
Вот мой предварительный просмотр макета:
Попробуйте изменить 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?
androidx.cardview:карточка:1.0.0
Вы пробовали на реальном устройстве? Это может быть ошибка кэширования, которая исчезнет после запуска.
Я не думаю, что это связано с настройкой CardView.
Проверьте свой ImageView, они могут быть причиной того, что угол не округляется.
Закомментируйте код просмотра изображения (весь ConstraintLayout) и проверьте пользовательский интерфейс. Поскольку у меня была такая же проблема в прошлом.
вы правы, без кода ImageView
работает нормально. но как я могу решить эту ошибку?
Оказалось, что проблема заключалась в том, что я смешивал библиотеку androidx cardview с библиотекой поддержки recyclerview. Однажды я перестроил проект с помощью:
implementation 'androidx.recyclerview:recyclerview:1.0.0'
implementation 'androidx.cardview:cardview:1.0.0'
все оказалось хорошо.
это все равно
Я обновил скомпилироватьSdkVersion с 28 до 29 на уровне приложения, и проблема решена.
compileSdkVersion 29
Я могу опоздать на это, но позвольте мне сэкономить чье-то время в будущем. У меня была эта проблема на моем Android Studio preview
, и я понял, что проблема в том, что содержимое внутри CardView не находится clipped
в границах CardView, поэтому углы, которые вы видите, являются углами ImageView, которые фактически обрезаются, когда вы запускаете приложение на эмуляторе/устройстве.
Надеюсь, это поможет!
Я удалил эти строки в своем файле манифеста, и после этого мои карты работают отлично.
android:hardwareAccelerated = "false"
спасибо сработало для меня
Вы можете создать новый файл для рисования 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)
Я пробовал выше, не могу воспроизвести ту же проблему. Я только что перенес свой демонстрационный проект на AndroidX.