工具栏 xml 阴影(高度)只能在 Android 21+ 上运行
Posted
技术标签:
【中文标题】工具栏 xml 阴影(高度)只能在 Android 21+ 上运行【英文标题】:Toolbar xml shadow (elevation) can get working only on Android 21+ 【发布时间】:2019-08-15 02:18:50 【问题描述】:所以我添加了导航抽屉,因此我必须在我的布局 xml 文件中使用工具栏(而不是使用带有操作栏的主题 Theme.AppCompat.Light.DarkActionBar
,现在是 Theme.AppCompat.Light.NoActionBar
)
<com.google.android.material.appbar.AppBarLayout
android:layout_
android:layout_>
<androidx.appcompat.widget.Toolbar
android:id="@+id/toolbar"
android:layout_
android:layout_
android:background="?attr/colorPrimary"
android:theme="@style/ThemeOverlay.AppCompat.ActionBar"/>
</com.google.android.material.appbar.AppBarLayout>
我找到了在工具栏下方添加阴影的答案 (AppBarLayout
) https://***.com/a/31026359/9766649
但它仅适用于 Android 21+
Theme.AppCompat.Light.DarkActionBar
shadow 适用于旧版 Android
所以唯一的解决方案是使用像https://***.com/a/26904102/9766649 这样的自定义阴影?
【问题讨论】:
【参考方案1】:我决定为新旧 Android 使用不同的实现
对于 Android 21+ (layout-v21/activity_main.xml):
<LinearLayout
android:orientation="vertical"
android:layout_
android:layout_>
<com.google.android.material.appbar.AppBarLayout
android:layout_
android:layout_
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_
android:layout_>
<include layout="@layout/toolbar_view"/>
<FrameLayout android:layout_
android:layout_>
<include layout="@layout/content"/>
<View android:layout_
android:layout_
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_
android:layout_
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>
【讨论】:
以上是关于工具栏 xml 阴影(高度)只能在 Android 21+ 上运行的主要内容,如果未能解决你的问题,请参考以下文章
Android LinearLayout:在 LinearLayout 周围添加带阴影的边框