Отсутствует тень на панели инструментов в Android 9 - PullRequest
0 голосов
/ 07 мая 2019

Я изо всех сил пытаюсь заставить тень панели инструментов появляться на Android 28+.Я попробовал несколько предложенных решений, но ни одно не помогло.Следующие стили работают хорошо для всех устройств ниже 28:

toolbar.xml

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

styles.xml

<style name="Widget.App.Toolbar.V1" parent="Widget.AppCompat.Toolbar">
    <item name="android:layout_height">?attr/actionBarSize</item>
    <item name="android:layout_width">match_parent</item>
    <item name="android:background">?attr/colorPrimary</item>
    <item name="popupTheme">@style/ThemeOverlay.AppCompat.Light</item>
    <item name="android:theme">@style/ThemeOverlay.AppCompat.Dark.ActionBar</item>
</style>

styles.xml (v21)

<style name="Widget.App.Toolbar" parent="Widget.App.Toolbar.V1">
    <item name="android:elevation">4dp</item>
</style>

Я также пытался установить высоту программно, безуспешно используя ViewCompat.setElevation.

У кого-нибудь есть идеи, как заставить это работать?

UPD: Я знаю, что вы можете создавать настраиваемые тени, но я бы хотел избежать этого решения, если это возможно.Просто не могу понять, почему такая базовая функциональность требует дополнительной прорисовки и просмотра в макете.Кроме того, мне интересно, почему это работает на предыдущих версиях Android.Не нашли никаких доказательств того, что это поведение изменилось.

Ответы [ 2 ]

0 голосов
/ 07 мая 2019

Я не знаю, почему это не работает для многих людей, добавив:

android:elevation="5dp"

Непосредственно на панель инструментов у меня хорошо работает.

0 голосов
/ 07 мая 2019

В итоге я установил свою собственную тень для панели инструментов, подумал, что это может пригодиться всем, кто ее ищет:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              xmlns:app="http://schemas.android.com/apk/res-auto"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:layout_gravity="top"
              android:orientation="vertical">

    <android.support.v7.widget.Toolbar android:id="@+id/toolbar"
                                       android:layout_width="match_parent"
                                       android:layout_height="wrap_content"
                                       android:background="@color/color_alizarin"
                                       android:titleTextAppearance="@color/White"
                                       app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"/>

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

        <!-- **** Place Your Content Here **** -->

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

    </FrameLayout>

</LinearLayout>

@ drawable / toolbar_dropshadow:

<?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="#88333333"
              android:angle="90"/>

</shape>

@ color/ color_alizarin

<color name="color_alizarin">#e74c3c</color>

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...