Używam paska narzędzi z AppCompat V7, aby zastąpić poprzedni pasek akcji i chcieć mieć cień paska narzędzi jak poprzedni pasek akcji. ale pasek narzędzi nie ma domyślnie cienia, a ja próbowałem poprawek wymienionych z reddit. ale bez szczęścia.Projektowanie materiałów - pasek narzędzi AppCompat bez pokazywania cienia
kod, aby ustawić cień:
mDrawerLayout.setDrawerShadow(R.drawable.drawer_shadow, GravityCompat.START);
Układ Pasek:
<?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">
układ działalność:
<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>
Ustawienie w 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>
Czy ktoś może pomóc?
dziękuję!
update 1: z sugestią Willisa otrzymuję wyświetlany cień, ale nie jest on poniżej paska narzędzi, zamiast tego znajduje się po lewej stronie paska narzędzi.
Aktualizacja 2: Zauważyłem, że jeśli nie ustawię windowContentOverlay w toolbar.xml i styles.xml, cień jest faktycznie na górze paska narzędzi.
Te dwa są całkowicie różne cienie. Pionowy to "DrawerLayout". Powinien być wyświetlany obok rozwiniętej szuflady. Poziomy jest częścią 'windowContentOverlay' na API poniżej' LOLLIPOP'. Podczas pracy z widżetem "Pasek narzędzi" pasek narzędzi nie jest częścią wystroju okna, więc cień zaczyna się w górnej części okna nad paskiem narzędzi, a nie pod nim. Musisz dodać dodatkowe puste 'Widok' pod' Toolbar' pre-'LOLLIPOP' z jego tłem ustawionym na pionowy shadow drawable (8dp tall' # 20000000' to '# 00000000'). Na 'LOLLIPOP' możesz ustawić rzędną 8dp na pasku narzędzi. –
Witaj Eugen, uratowałeś mi dzień. Dokładnie tego potrzebuję i działa świetnie pod pre-Lollipop. to powinien być poprawny anwser. Czy możesz to opublikować jako odpowiedź i mogę to zaakceptować. wielkie dzięki! –
Po prostu to zrobiłem, cieszę się, że mogę służyć. –