2014-11-12 4 views
12

Ich habe einige RecyclerView mit Kartenelementen. Und auf PreLollipop-Geräten sieht es gut aus. Aber auf Lollipop sieht es ohne Abstand zwischen den Kindkarten aus. Ich habe versucht, Rand und Padding zu verwenden, aber es hat nicht geholfen. Wenn ich Rand auf Lollipop verwende, sieht es gut aus, aber mit dem gleichen Rand auf preLollipop Abstand ist sehr groß. Noch einmal: Warum gibt es unterschiedliche Abstände? Welche Eigenschaft sollte ich verwenden, um es zu beheben?Verwenden von RecyclerView mit Karte

Antwort

22

Dies passiert, weil Schatten auf L außerhalb der View-Grenzen liegen, aber vor L, sie befinden sich innerhalb der View (leider gibt es keine echte Schattenunterstützung vor L).

Wenn Sie wollen, dass CardView auf L den gleichen Abstand hat, setzen Sie cardUseCompatPadding auf true.

1

Ich hatte das gleiche Problem. Ich musste einen Layout-v21-Ordner erstellen, der von Lollipop-Geräten verwendet wird, und das Layout dupliziere den Rand/Abstand, den ich brauchte, um es richtig zu verteilen.

So, wenn Ihre App auf Lollipop gestartet wird, wird das Layout aus dem Ordner layout-v21 mit dem richtigen Speicherplatz eingelesen und jedes andere Gerät wird zu Ihrer Standard-Layoutdatei, wo der Platz nicht benötigt wird explizit festgelegt werden.

Hoffe, das hilft.

15

yigits Antwort war hilfreich, aber hatte nicht viel Detail, also füge ich hier einige für zukünftige Zuschauer dieses Beitrags hinzu.

Hier ist ein Beispiel, wie ich das funktionierte (nicht offensichtlich aus verknüpften android site in yigit Antwort).

<android.support.v7.widget.CardView 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:card_view="http://schemas.android.com/apk/res-auto" 
    android:layout_height="wrap_content" 
    android:layout_width="match_parent" 
    android:layout_marginLeft="@dimen/activity_vertical_margin" 
    android:layout_marginRight="@dimen/activity_vertical_margin" 
    android:layout_marginTop="2dip" 
    android:layout_marginBottom="2dip" 
    card_view:cardUseCompatPadding="true"> 

    // Other layouts and views here 

</android.support.v7.widget.CardView> 

Die card_view, die einen Unterstrich benötigt und das res-auto-Schema verwendet, war nicht offensichtlich.

Es gibt ein gutes Beispiel dafür in der Material Design Training.

+1

Sie verpassen ein schließendes Tag in Ihrem CardView. Ich wollte es beheben, aber ich muss mindestens 6 Zeichen bearbeiten :((und es gab nichts, was ich ändern könnte) - wäre toll, wenn Sie es korrigieren könnten :) – AgentKnopf

+1

Ups. Alles jetzt eingestellt? – Splaktar

+1

Jepp sieht gut aus und danke für die ausführliche Antwort :)! Obwohl ich diese card_view entfernen musste: cardUseCompatPadding - da es nicht richtig gelöst wurde. Nicht sicher, dass das war, weil die Bibliothek zu der Zeit fehlte, aber wenn es wirklich nicht funktioniert, werde ich zu dir zurückkommen. Obwohl ich denke, dass es mit einem anderen Problem zusammenhängt und wenn Sie es getestet haben, sollte es in Ordnung sein, denke ich. – AgentKnopf