web-dev-qa-db-de.com

Einrichten der Erhöhung in XML in AppCompat CardView unter Android 5.0

Soweit ich weiß, schien es in der frühen Vorschauphase keine Möglichkeit zu geben, XML-Höhe nur für CardViews ohne einen Hack in Java festzulegen. Gibt es eine Möglichkeit, jetzt, da die offizielle Version verfügbar ist, dies in XML zu tun, ohne Java-Code zu schreiben, um die Erhöhung festzulegen?

Ich habe card_view:cardElevation ohne Wirkung versucht. Ich hatte gedacht, als ich die Emulatoren für 5.0 verwendete, war alles in Ordnung. Jetzt, da ich die offizielle Version auf meinem aktuellen Gerät verwende, sind alle CardViews verschwunden

Pre Lollipop, es funktioniert super. 

Hier ist mein volles XML

<?xml version="1.0" encoding="utf-8"?>
<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:orientation="horizontal"
    Android:layout_width="match_parent"
    Android:id="@+id/cv1"
    card_view:cardElevation="4dp"
    Android:layout_margin="6dp"
    card_view:cardCornerRadius="3dp"
    Android:layout_height="match_parent">
83
KickingLettuce

Es sieht aus wie ein Rand-/Füllungsproblem. Versuchen Sie, das Attribut cardUseCompatPadding auf true zu setzen. Z.B.:

<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="match_parent"
    Android:layout_margin="6dp"
    card_view:cardUseCompatPadding="true"
    card_view:cardElevation="4dp"
    card_view:cardCornerRadius="3dp">

Erklärung aus dem Android-Dokument:

CardView fügt zusätzliche Auffüllungen hinzu, um Schatten auf Plattformen vor .__ zu zeichnen. L.

Dies kann dazu führen, dass Karten zwischen L und vor L ..__ unterschiedliche Größen haben. Wenn Sie CardView mit anderen Ansichten ausrichten müssen, benötigen Sie möglicherweise api Versionsspezifische Dimensionsressourcen, um die Änderungen zu berücksichtigen. Als Alternativ können Sie das cardUseCompatPadding-Flag auf true setzen, und CardView fügt auf den Plattformen L und danach dieselben Auffüllwerte hinzu.

Da das cardUseCompatPadding-Flag auf true gesetzt wird, werden unnötige Lücken in der Benutzeroberfläche hinzugefügt. Der Standardwert ist false.

292
Gaëtan M.

Sie müssen das Attribut cardElevation verwenden

<Android.support.v7.widget.CardView
    xmlns:card_view="http://schemas.Android.com/apk/res-auto"
    card_view:cardElevation="4dp" />
12

Wenn Sie diese Zeile haben 

Android:hardwareAccelerated="false"

im Manifest-Anwendungs-Tag wurden Ihre Schatten nicht angezeigt. Versuchen Sie, diese Zeile zu entfernen

oder verwenden 

Android:hardwareAccelerated="true"

Das hat für mich funktioniert! Ich hoffe es klappt auch für dich :)

11
matin ashtiani

Es löste mich durch Hinzufügen 

xmlns: card_view = "http://schemas.Android.com/apk/res-auto"

zum Beispiel:

<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_content"
    Android:layout_marginTop="5dp"
    Android:layout_marginLeft="5dp"
    Android:layout_marginRight="5dp"
    card_view:cardCornerRadius="5dp">
0
felhi

ich füge eine App hinzu: cardElevation = "8dp" -Attribut in der Kartenansicht, so wird es wie folgt aussehen:

<Android.support.v7.widget.CardView
        Android:layout_width="match_parent"
        Android:layout_height="160dp"
        Android:layout_marginStart="16dp"
        Android:layout_marginLeft="16dp"
        Android:layout_marginTop="24dp"
        Android:layout_marginEnd="16dp"
        Android:layout_marginRight="16dp"
        app:cardElevation="8dp"
        app:cardCornerRadius="8dp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/textView">

        <ImageView
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:scaleType="centerCrop"
            Android:src="@drawable/kmp_warna1" />

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

Hoffe es wird helfen

0
Cevin Ways