Панель инструментов xml shadow (height) может работать только на Android 21+ - PullRequest
1 голос
/ 24 марта 2019

Итак, я добавил Navigation Drawer, и из-за этого мне нужно использовать панель инструментов в моем XML-файле макета (вместо использования темы с панелью действий Theme.AppCompat.Light.DarkActionBar, и теперь она Theme.AppCompat.Light.NoActionBar)

<com.google.android.material.appbar.AppBarLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <androidx.appcompat.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        android:background="?attr/colorPrimary"
        android:theme="@style/ThemeOverlay.AppCompat.ActionBar"/>

</com.google.android.material.appbar.AppBarLayout>

Я нашел этот ответ, чтобы добавить тень под панелью инструментов (AppBarLayout) https://stackoverflow.com/a/31026359/9766649

Но это работает только для Android 21 +

С Theme.AppCompat.Light.DarkActionBar тень работает для старых Android

Таким образом, единственным решением является использование пользовательских теней, таких как https://stackoverflow.com/a/26904102/9766649?

1 Ответ

0 голосов
/ 26 марта 2019

Я решил использовать другую реализацию для более старых и новых Android

Для Android 21+ (layout-v21 / activity_main.xml):

<LinearLayout
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <com.google.android.material.appbar.AppBarLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        xmlns:android="http://schemas.android.com/apk/res/android">

        <include layout="@layout/toolbar_view"/>

    </com.google.android.material.appbar.AppBarLayout>

    <include layout="@layout/content"/>

</LinearLayout>

Для старых версий Android (layout / activity_main.xml):

<LinearLayout
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <include layout="@layout/toolbar_view"/>

    <FrameLayout android:layout_width="match_parent"
                 android:layout_height="match_parent">

        <include layout="@layout/content"/>

        <View android:layout_width="match_parent"
              android:layout_height="5dp"
              android:background="@drawable/drop_shadow"/>

    </FrameLayout>

</LinearLayout>

toolbar_view.xml:

<?xml version="1.0" encoding="utf-8"?>
<androidx.appcompat.widget.Toolbar
    android:id="@+id/toolbar"
    android:layout_width="match_parent"
    android:layout_height="?attr/actionBarSize"
    android:background="?attr/colorPrimary"
    android:theme="@style/ThemeOverlay.AppTheme.ActionBar"
    xmlns:android="http://schemas.android.com/apk/res/android"/>

drawable / drop_shadow.xml (чтобы добавить высоту под панелью инструментов для старого Android):

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
       android:shape="rectangle">

    <gradient android:startColor="@android:color/transparent"
              android:endColor="#88666666"
              android:angle="90"/>

</shape>
...