So stellen Sie die Padding für CardView-Widget in Android L ein

Ich benutze android:paddingLeft und android:paddingTop , um die CardView für das neue CardView Widget zu setzen, aber es funktioniert nicht.

Ich kann die Marge für alle Kontrollen innerhalb der CardView als Workaround setzen, aber das ist ein Schmerz, wenn es zu viele Kontrollen gibt.

  • Android Studio - keine Debugable-Anwendungen
  • Android: Verringert den Abstand zwischen den Spalten in GridView
  • Wie beschränken Sie AutoCompleteTextView Dropdown-Dismiss?
  • Serving eine lokale Website über Bluetooth zu einem Handy ohne Internet
  • Wie öffne ich eine pdf-Datei mit jquery und phonegap in android?
  • Zusammenführen von Android-Aktionsleiste mit Menü-Registerkarten
  • Wie kann ich das Padding-Widget einstellen?

     <android.support.v7.widget.CardView xmlns:card_view="http://schemas.android.com/apk/res-auto" android:id="@+id/card_view" android:layout_gravity="center" android:layout_width="match_parent" android:layout_height="200dp" android:paddingLeft="20dp" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="20dp" android:paddingBottom="@dimen/activity_vertical_margin" card_view:cardCornerRadius="2dp"> <TextView android:id="@+id/info_text" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Hello World!"/> </android.support.v7.widget.CardView> 

  • Loader: onLoadFinished nur einmal genannt
  • Zeigen Sie eine RecyclerView in Fragment an
  • Werkzeug, um Speicherlecks in android zu überprüfen
  • Retrofit2 + SimpleXML in Kotlin: MethodException: Annotation muss eine Set- oder Get-Methode markieren
  • Was ist der Zweck von Gradle?
  • Bilder in SimpleCursorAdapter
  • 4 Solutions collect form web for “So stellen Sie die Padding für CardView-Widget in Android L ein”

    CardView vor L-Vorschau verwendet RoundRectDrawableWithShadow um seinen Hintergrund zu zeichnen, der Drawable.getPadding() überschreibt, um Schattenpolsterung hinzuzufügen. Der View-Hintergrund wird über Code nach der Inflation gesetzt, der jede in XML angegebene Auffüllung überschreibt.

    Sie haben zwei Möglichkeiten:

    1. Setzen Sie die Auffüllung zur Laufzeit mit View.setPadding() und seien Sie vorsichtig, um die Schatten anzupassen (aber nur vor L-Vorschau!).
    2. Legen Sie alles in ein Layout, das Polsterung spezifiziert.

    Die letztere Option ist am sichersten.

     <android.support.v7.widget.CardView xmlns:card_view="http://schemas.android.com/apk/res-auto" android:id="@+id/card_view" android:layout_gravity="center" android:layout_width="match_parent" android:layout_height="200dp" card_view:cardCornerRadius="2dp"> <FrameLayout android:paddingLeft="20dp" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="20dp" android:paddingBottom="@dimen/activity_vertical_margin"> <TextView android:id="@+id/info_text" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Hello World!"/> </FrameLayout> </android.support.v7.widget.CardView> 

    CardView sollte dies mit den contentPadding Attributen behandeln, mit contentPadding es kommt :

     <android.support.v7.widget.CardView xmlns:card_view="http://schemas.android.com/apk/res-auto" android:id="@+id/card_view" android:layout_gravity="center" android:layout_width="match_parent" android:layout_height="200dp" card_view:cardCornerRadius="2dp" card_view:contentPaddingLeft="20dp" card_view:contentPaddingRight="@dimen/activity_horizontal_margin" card_view:contentPaddingTop="20dp" card_view:contentPaddingBottom="@dimen/activity_vertical_margin"> <TextView android:id="@+id/info_text" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Hello World!"/> </android.support.v7.widget.CardView> 

    Wenn du CardView-Padding auf Pre-L-Geräten verwenden willst und es bei Lollipop + Geräten gleich aussieht, dann musst du setUseCompatPadding(true) oder die XML-Variante cardUseCompatPadding="true" .

    Das ist, weil "CardView zusätzliche Polsterung hinzufügt, um Schatten auf Plattformen vor L zu zeichnen." [1] So hat die Standardimplementierung die verschiedenen API-Versionen, die unterschiedlich aussehen und Ansichten möglicherweise nicht ordnungsgemäß ordnen. Also, der einfachste Weg, um diese Frage zu beheben ist die oben genannten Möglichkeiten, oder verwenden Sie Margen statt.

    Beispielcode

     <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_width="match_parent" android:layout_height="wrap_context" card_view:cardUseCompatPadding="true" card_view:contentPadding="8dp" card_view:cardCornerRadius="4dp" > ... </android.support.v7.widget.CardView> 

    Quellen

    [1] CardView.setUseCompatPadding (boolean)

    [2] android.support.v7.cardview: cardUseCompatPadding

    Dies ist, was für mich gearbeitet – platziert jedes Element in einem Rahmen-Layout

     <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginBottom="-4dp"> <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:background="@color/white_three" android:orientation="vertical" card_view:cardCornerRadius="2dp" card_view:cardElevation="@dimen/card_elevation" card_view:cardMaxElevation="0dp" card_view:cardPreventCornerOverlap="false" card_view:cardUseCompatPadding="true" </android.support.v7.widget.CardView> 

    Überprüfen Sie, ob card_view " http://schemas.android.com/apk/res-auto " und nicht Werkzeuge ist, und setzen Sie auch negative Margen auf die Rahmenansicht, um Schatten zu pflegen – funktioniert gut.

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.