Gibt es eine Möglichkeit, einem View
Pre-Lollipop-Gerät eine Erhöhung hinzuzufügen , ohne sie in ein zu wickeln CardView
?
CardView
. Ich möchte es View
wenn möglich zu jedem hinzufügen .
Gibt es eine Möglichkeit, einem View
Pre-Lollipop-Gerät eine Erhöhung hinzuzufügen , ohne sie in ein zu wickeln CardView
?
CardView
. Ich möchte es View
wenn möglich zu jedem hinzufügen .
Antworten:
ViewCompat.setElevation(View, int)
Derzeit erstellt keine Unterlegscheiben.
Die einzige Möglichkeit, die Höhe zu simulieren, besteht darin, einen Schatten vor Version 21 anzuwenden. Definieren Sie Ihren Stil / Layout / Zeichenbar values
und überschreiben Sie ihn in values-v21
. Für Schaltflächen verwende ich Stilüberschreibungen. Bei Layouts verwende ich normalerweise die Referenzüberschreibung (verwenden Sie @null
diese Option, um ein Zeichenelement zu entfernen).
Hoffentlich werden in Zukunft durch ein Update der Support-Bibliothek Shims hinzugefügt.
Dieser reddit-Thread verfolgt das Update.
Die neue Support-Design-Bibliothek erstellt tatsächlich Unterlegscheiben für die schwebende Aktionsschaltfläche.
Dies ist ein Beispiel für das Hinzufügen eines Schattens unter den Toolbar
Geräten vor dem Lutschern:
Das Layout sollte folgendermaßen aussehen:
<RelativeLayout
android:id="@+id/toolbar_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true" >
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:animateLayoutChanges="true"
android:background="?attr/colorPrimary"
android:minHeight="?attr/actionBarSize"
app:theme="@style/ThemeOverlay.AppCompat.ActionBar" />
<View
android:id="@+id/toolbar_shadow"
android:layout_width="match_parent"
android:layout_height="@dimen/toolbar_shadow"
android:layout_below="@id/toolbar"
android:background="@drawable/toolbar_dropshadow" />
</RelativeLayout>
Und der Schatten ist:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" >
<gradient
android:angle="90"
android:endColor="#88444444"
android:startColor="@android:color/transparent" />
</shape>
Ich erreiche den gleichen Effekt mit,
android:background="@android:drawable/dialog_holo_light_frame"
Meine getestete Ausgabe:
Referenz - https://stackoverflow.com/a/25683148/3879847
Update: Wenn Sie die Farbe dieses Zeichens ändern möchten, versuchen Sie es mit der Antwort von @Irfan
Sie können jetzt das Schema xmlns:app="http://schemas.android.com/apk/res-auto"
und verwendenapp:elevation
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">
...
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom|end"
app:elevation="5dp">