Я установил угловой радиус CardView на 50 dp, чтобы получить самый круглый угол. Но в некоторых телефонах (я видел в андроиде 8) цвет фона карты обрезается. Хотя высота тени/карты округлена, цвет фона — нет. Что здесь может быть не так? Заранее спасибо.
Цвет фона CardView обрезан
comment
Опубликуйте свой код, пожалуйста
- person Gabriele Mariotti   schedule 15.06.2020
Ответы (2)
Вместо использования углового радиуса 50dp
используйте атрибут shapeAppearanceOverlay
для определения угла с 50%
:
<com.google.android.material.card.MaterialCardView
app:shapeAppearanceOverlay="@style/ButtomShape50"
app:cardBackgroundColor="@color/...."
...>
с:
<style name="ButtomShape50">
<item name="cornerFamily">rounded</item>
<item name="cornerSize">50%</item>
</style>
Программно вы можете сделать:
cardView.setShapeAppearanceModel(cardView.getShapeAppearanceModel()
.toBuilder()
.setAllCorners(new RoundedCornerTreatment()).setAllCornerSizes(new RelativeCornerSize(0.5f))
.build());
Просто примечание о новом RelativeCornerSize(0.5f)
: он изменился в 1.2.0-beta01
. До этого было new RelativeCornerSize(50)
).
В вашем случае вы также можете использовать FloatingActionButton
или ExtendedFloatingActionButton
без использования CardView
.
<com.google.android.material.floatingactionbutton.ExtendedFloatingActionButton
app:elevation="4dp"
app:shapeAppearanceOverlay="@style/ButtomShape50"/>
person
Gabriele Mariotti
schedule
14.06.2020
Большое спасибо. Но у вас есть что-нибудь для виджета CardView? ‹androidx.cardview.widget.CardView Также мотыгой, чтобы сделать это динамически без использования каких-либо ресурсов?
- person dhir; 15.06.2020
MaterialCardView
расширяет androidx.cardview.widget.CardView
и предоставляется Google в официальной библиотеке компонентов материалов. Что вы имеете в виду под динамическим? Это статические ресурсы, но вы можете сделать это и программно.
- person Gabriele Mariotti; 15.06.2020
Да, я хочу сделать это программно. Как это сделать ? И я не хочу использовать статический файл ресурсов. Все должно содержаться в java файле
- person dhir; 15.06.2020
Спасибо. Ваш пример работает, но поскольку я не использую материальную тему, я не могу использовать это. Что-нибудь для appCompat? И я могу создавать круглые кнопки, используя плавающие кнопки. Является ли пользовательский фон лучшим вариантом? Можем ли мы не использовать CardView для достижения этой цели?
- person dhir; 15.06.2020
Какую библиотеку вы используете для Fab?
- person Gabriele Mariotti; 15.06.2020
Я использую
com.google.android.material.floatingactionbutton.FloatingActionButton
, но это не дает мне никаких исключений. Но когда я использую MaterialCardView, он говорит мне изменить тему
- person dhir; 15.06.2020
@dhir Проверьте doc. Для этой библиотеки требуется тема Material Components или тема Bridge.
- person Gabriele Mariotti; 15.06.2020
Вы используете android:background
для цвета фона карточки? Вы должны использовать app:cardBackgroundColor
.
person
Dark Byte
schedule
14.06.2020
Я использую app:cardBackgroundColor, но у меня все еще есть эта проблема.
- person dhir; 15.06.2020