Android 9上没有工具栏高程阴影

时间:2019-05-07 13:28:14

标签: android material-design

我正在努力使工具栏阴影出现在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 :(得分:0)

我最终为工具栏设置了自己的投影,认为这可能对任何寻找它的人都有用:

this.write();

@ drawable / toolbar_dropshadow:

fs.writeFileSync();

@ color / color_alizarin

<TABLE COLS="3" border="0" cellspacing="0" cellpadding="0">
    <TR style="vertical-align:top">
        <TD>
            <!-- The log text-box -->
            <div style="height:800px; width:240px; border:1px solid #ccc; font:16px/26px Georgia, Garamond, Serif; overflow:auto;">
                Log:
            </div>
        </TD>
        <TD>
            <!-- The 2nd column -->
        </TD>
        <TD>
            <!-- The 3rd column -->
        </TD>
    </TR>
</TABLE>

enter image description here

答案 1 :(得分:0)

我不知道为什么它对许多人都无效,

android:elevation="5dp"

直接进入工具栏对我来说很好。