Я пытаюсь использовать, CardView
и он хорошо работает ниже 5.0, но выглядит странно на Lollipop.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin">
<android.support.v7.widget.CardView android:layout_width="match_parent"
android:layout_height="200dp">
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="card1"
android:textAppearance="?android:attr/textAppearanceLarge" />
</android.support.v7.widget.CardView>
<android.support.v7.widget.CardView android:layout_width="match_parent"
android:layout_height="200dp">
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="card2"
android:textAppearance="?android:attr/textAppearanceLarge" />
</android.support.v7.widget.CardView>
</LinearLayout>
У меня возникает тот же вопрос, когда я использую RecyclerView
, нужно ли мне что-то добавлять, если он работает на Lollipop?
android
android-cardview
Cajsaiko
источник
источник
LinearLayout
между картамиОтветы:
Установите это на
CardView
:app:cardUseCompatPadding="true"
Из документации:
источник
android:divider="@null"
.Используйте эти два тега ниже внутри вашего cardview:
app:cardPreventCornerOverlap="false" app:cardUseCompatPadding="true"
источник
Первое изображение - это ожидаемое поведение при просмотре карточки. когда карта имеет возвышение, тень падает на нижние слои. В устройствах pre-lollipop возвышение выполняется путем добавления набивки. таким образом, устройства pre-lollipop будут иметь прокладку вокруг вида карты.
источник
Вы должны добавить
app:cardUseCompatPadding="true"
в свойCardview
. Но простое добавление этого может привести к ошибке. Чтобы избежать этой ошибки, вам также необходимо добавитьxmlns:app="http://schemas.android.com/apk/res-auto"
в свойCardView
.Например,
<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_height="wrap_content" android:layout_width="match_parent" app:cardUseCompatPadding="true"> // Other views here </android.support.v7.widget.CardView>
Некоторые добавили бы
card_view:cardUseCompatPadding="true"
иxmlns:card_view="http://schemas.android.com/apk/res-auto"
вместо упомянутых выше. Оба способа верны.Если вы хотите узнать больше о приложении в XML (Android), просмотрите этот ответ :
Хотя предыдущие ответы решат проблему, они не объяснили, что делает каждый атрибут. Чтобы помочь ищущим ответов,
cardPreventCornerOverlap
Атрибут добавляет заполнение в CardView в версии 20 и ранее, чтобы предотвратить пересечение содержимого карты и закругленных углов.cardUseCompatPadding
Атрибут добавляет отступ в API v21 +, чтобы иметь те же измерения, что и в предыдущих версиях.источник