Ich benutze die Symbolleiste von AppCompat V7, um die vorherige Aktionsleiste zu ersetzen und den Schatten der Symbolleiste wie die vorherige Aktionsleiste zu haben. aber die Symbolleiste hat standardmäßig keinen Schatten und ich habe die Fixes aus reddit versucht. aber ohne Glück.Material Design - AppCompat Symbolleiste ohne Schatten zu zeigen
der Code den Schatten zu setzen:
mDrawerLayout.setDrawerShadow(R.drawable.drawer_shadow, GravityCompat.START);
Die Symbolleiste Layout:
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
android:minHeight="?attr/actionBarSize"
android:background="#F1F1F1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="0dp"
android:layout_margin="0dp"
foreground="?android:windowContentOverlay">
die Aktivität Layout:
<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
tools:context=".MainActivity"
android:layout_width="match_parent"
android:id="@+id/drawer_layout"
android:layout_height="match_parent">
<!-- activity view -->
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<include
android:id="@+id/toolbar"
layout="@layout/toolbar" />
<FrameLayout android:id="@+id/fragment_container"
android:layout_below="@id/toolbar"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
</RelativeLayout>
<!-- navigation drawer -->
<RelativeLayout
android:id="@+id/left_drawer"
android:layout_gravity="start"
android:layout_width="match_parent"
android:background="#fff"
android:layout_height="match_parent">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingLeft="16dp"
android:paddingRight="16dp"
android:paddingTop="8dp"
android:paddingBottom="8dp"
android:divider="#eee"
android:background="#EEE"
android:id="@+id/drawer_header">
<ImageView
android:id="@+id/user_icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="top"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:contentDescription="@string/user_icon"
android:src="@drawable/ic_action_person"
android:paddingTop="0dp"
android:paddingLeft="0dp"/>
<TextView
android:id="@+id/userName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@+id/user_icon"
android:gravity="center"
android:layout_gravity="center_vertical"
android:layout_centerVertical="true"
android:textSize="14sp"
android:text="@string/not_logged_in"
android:paddingTop="0dp"
android:paddingBottom="0dp"/>
</RelativeLayout>
<ListView
android:id="@+id/drawer_list"
android:layout_below="@+id/drawer_header"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:divider="#eee"
android:background="#fff"
android:dividerHeight="0dp" />
</RelativeLayout>
</android.support.v4.widget.DrawerLayout>
Einstellung im style.xml:
<style name="myAppTheme" parent="Theme.AppCompat.Light">
<item name="colorPrimary">@color/primaryColor</item>
<item name="colorPrimaryDark">@color/primaryColorDark</item>
<item name="android:windowNoTitle">true</item>
<item name="windowActionBar">false</item>
<item name="drawerArrowStyle">@style/DrawerArrowStyle</item>
<item name="android:windowContentOverlay">@drawable/drawer_shadow</item>
</style>
<style name="DrawerArrowStyle" parent="Widget.AppCompat.DrawerArrowToggle">
<item name="spinBars">true</item>
<item name="color">@android:color/black</item>
</style>
Kann jemand helfen?
danke!
Update 1: mit dem Vorschlag von Willis, ich bekomme den Schatten angezeigt, aber es ist nicht unter der Symbolleiste, sondern es ist auf der linken Seite der Symbolleiste.
Update 2: Ich habe festgestellt, dass, wenn ich nicht windowContentOverlay in toolbar.xml und styles.xml festlegen, der Schatten tatsächlich auf der Oberseite der Symbolleiste ist.
Die beiden sind ganz andere Schatten. Die vertikale ist die von 'DrawerLayout'. Es soll neben erweiterter Schublade angezeigt werden. Die horizontale Komponente ist Teil von 'windowContentOverlay' auf APIs unter' LOLLIPOP'. Wenn Sie mit dem 'Toolbar'-Widget arbeiten, ist die Symbolleiste nicht Teil der Fensterdekoration, daher beginnt der Schatten oben im Fenster über der Symbolleiste statt darunter. Sie müssen eine zusätzliche leere "Ansicht" unterhalb der "Symbolleiste" vor "LOLLIPOP" hinzufügen, wobei der Hintergrund auf einen vertikalen Schatten (8 dp groß '# 20000000' bis' # 00000000') eingestellt ist. Auf 'LOLLIPOP' können Sie eine 8dp Höhe in der Werkzeugleiste einstellen. –
Hallo Eugen, du hast mir den Tag gerettet. Das ist genau das, was ich brauche, und es funktioniert großartig unter Pre-Lollipop. Das sollte die richtige Antwort sein. Kannst du es als Antwort posten und ich kann das akzeptieren. Danke vielmals! –
Ich tat es nur, froh, dass ich Ihnen behilflich sein konnte. –