Ich versuche das zu benutzen CardView
und es funktioniert gut unter 5.0, sieht aber auf Lollipop seltsam aus.
<?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>
Ich stelle die gleiche Frage, wenn ich das verwende. RecyclerView
Sollte ich etwas hinzufügen müssen, wenn es auf Lollipop läuft?
android
android-cardview
cajsaiko
quelle
quelle
LinearLayout
zwischen den Karten hinzufügenAntworten:
Stellen Sie dies auf ein
CardView
:app:cardUseCompatPadding="true"
Aus der Dokumentation:
quelle
android:divider="@null"
.Verwenden Sie diese beiden Tags unten in Ihrer Kartenansicht:
app:cardPreventCornerOverlap="false" app:cardUseCompatPadding="true"
quelle
Das erste Bild zeigt das erwartete Verhalten der Kartenansicht. Wenn die Karte eine Höhe hat, fällt der Schatten auf die unteren Schichten. Bei den Pre-Lollipop-Geräten erfolgt die Erhöhung durch Hinzufügen einer Polsterung. So haben die Pre-Lollipop-Geräte eine Polsterung um die Kartenansicht.
quelle
Sie müssen
app:cardUseCompatPadding="true"
zu Ihrem hinzufügenCardview
. Aber nur das Hinzufügen kann zu einem Fehler führen. Um diesen Fehler zu vermeiden, müssen Sie auchxmlns:app="http://schemas.android.com/apk/res-auto"
zu Ihrem hinzufügenCardView
.Zum Beispiel,
<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>
Einige würden hinzufügen
card_view:cardUseCompatPadding="true"
undxmlns:card_view="http://schemas.android.com/apk/res-auto"
anstelle der oben genannten. Beide Wege sind richtig.Wenn Sie mehr über App in XML (Android) erfahren möchten , gehen Sie diese Antwort durch :
Obwohl frühere Antworten das Problem lösen, haben sie nicht erklärt, was jedes Attribut tut. Um hilfreicher zu sein, um Suchenden zu antworten,
cardPreventCornerOverlap
Das Attribut fügt CardView ab Version 20 eine Auffüllung hinzu, um Überschneidungen zwischen dem Karteninhalt und abgerundeten Ecken zu vermeiden.cardUseCompatPadding
Das Attribut fügt auch in API v21 + eine Auffüllung hinzu, um dieselben Messungen wie in früheren Versionen zu erzielen.quelle