10

Ich arbeite an Raster-Layout mit Recyclerview in Android. Das Gitter nimmt einen Teil des Bildschirms ein und hat einen Schatten. Um den gewünschten Schatteneffekt zu erhalten, verwende ich einen Höhenwert von 12 dp. Aber es scheint nicht zu funktionieren, da ich keine Höhe (Schatten) des Gitters sehen kann. Warum passiert dies? Unterstützt Recyclerview keine Höhe?Wie setze ich den Höhenwert richtig auf Recyclerview?

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:id="@+id/activity_grid_layout" 
android:background="@drawable/gradient" 
android:layout_height="match_parent" 
tools:context="com.mindhive.mindhive.activities.GridActivity"> 

<android.support.v7.widget.RecyclerView 
    android:id="@+id/grid_recycler_view" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:layout_marginBottom="110dp" 
    android:layout_marginLeft="15dp" 
    android:layout_marginTop="80dp" 
    android:background="@color/transparent" 
    android:elevation="12dp" 
    android:scrollIndicators="none" 
    android:scrollbars="none" 
    android:padding="0dp" /> 

<ImageView 
    android:id="@+id/imageView" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignBottom="@+id/grid_recycler_view" 
    android:layout_alignStart="@+id/grid_recycler_view" 
    android:layout_marginBottom="-18dp" 
    android:layout_marginStart="67dp" 
    android:src="@drawable/main_filter" 
    android:elevation="1dp" /> 
...... 
+0

Vielleicht möchten Sie Karten verwenden, die an der Höhe angehoben werden können. –

+1

Ich möchte keine Höhe für die Elemente in der Recyclerview, sondern ich suche nach Höhe für die gesamte Recyclerview. – Neanderthal

Antwort

16

Ich fand die Antwort nach ein wenig Suche von here. Das Problem war der transparente Hintergrund. Elevation arbeitet mit nur nicht transparenten Hintergründen in Ansichten. Um es zu beheben, sollten wir android:outlineProvider="bounds" auf der Ansicht und android:clipToPadding="false" auf dem übergeordneten Element der Ansicht festlegen.

Ich hoffe, es hilft jemandem.

+0

Diese zwei Attribute funktionierten für mich, aber ich musste es für die Ansicht selbst hinzufügen, und nicht ihre Eltern, damit es funktioniert –

0

Die Android: Elevation wendet nur Schatten auf Geräte an, auf denen Lollipop oder höher läuft. Wenn Sie ältere Geräte unterstützen möchten, müssen Sie selbst einen Schatten erstellen.

+0

Mein Gerät läuft auf Android 5.1.1, also sollten Schatten perfekt funktioniert haben. – Neanderthal

+1

Was passiert, wenn Sie 'android: background =" @ android: color/white "' anstelle von 'android: background =" @ color/transparent "' verwenden? Übrigens gibt es eine eingebaute Farbe für transparent: '" @android: color/transparent "' –

+0

Ja, das würde es beheben. Danke, dass Sie auf die Android-Ressource hingewiesen haben. Ich habe das Problem gefunden und mit Hilfe von [link] (http://stackoverflow.com/questions/27477371/android-elevation-not-showing-a-shadow) behoben. Ich habe den Hintergrund transparent gemacht, der keinen Schatten wirft. – Neanderthal

1

Für Lollipop und Sie können die Android verwenden: Höhen Eigenschaft, aber unter Lollipop-Versionen müssen Sie benutzerdefinierte so geben Schatten den Code unten für Schatten

card_background.xml

<?xml version="1.0" encoding="utf-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
<item> 
    <shape android:shape="rectangle"> 
     <solid android:color="#CABBBBBB"/> 
     <corners android:radius="2dp" /> 
    </shape> 
</item> 

<item 
    android:left="0dp" 
    android:right="0dp" 
    android:top="0dp" 
    android:bottom="2dp"> 
    <shape android:shape="rectangle"> 
     <solid android:color="@android:color/white"/> 
     <corners android:radius="2dp" /> 
    </shape> 
</item> 
</layer-list> 

diese Datei Geben Sie beziehen ein Hintergrund für Ihre Recyclerview Inflater-Datei wird es gut funktionieren.

+0

Wenn Sie sich meinen Code ansehen, verwende ich bereits das Höhenattribut, aber es funktioniert immer noch nicht, obwohl mein Gerät auf Lollipop läuft. – Neanderthal

+0

dann können Sie diese Datei als Hintergrund für Ihre inflater Datei verwenden, es wird mit jeder Version funktionieren. –

Verwandte Themen