如您所知,Elevation不适用于Pre-Lollipop设备。因此,appcompat-v7中的默认App Bar使用“伪阴影”纹理,我喜欢称之为模拟阴影。我的问题是我需要使用自定义工具栏。当我使用自定义工具栏时,不存在“伪阴影”。所以它看起来很平坦。知道如何添加阴影吗?有些人在其他论坛上说过添加一个前景为“android:windowContentOverlay”的FrameLayout,它以某种方式与ToolBar重叠。遗憾的是,我还没有找到任何办法让这项工作得以实现。出于某种原因,在我的测试中,“android:windowContentOverlay”无论如何都是隐形的。不知道我做错了什么。 :/
以下是我的工具栏的布局XML数据:
<android.support.v7.widget.Toolbar
android:id="@+id/my_awesome_toolbar"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:minHeight="?attr/actionBarSize"
android:background="?attr/colorPrimary"
app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />
以下是默认AppCompat AppBar的样子:http://imgur.com/0EiE1Vv
以下是自定义工具栏的外观:http://imgur.com/GGEC6Tq
编辑:在alanv的帮助下,我想出了如何在工具栏下面制作阴影。但是,它与AppCompat中的默认设置不同。它只是一个微弱的阴影,如果我没记错的话,它与旧版本中使用的阴影资源相同。我正在努力寻找默认AppCompat栏的资源。
答案 0 :(得分:1)
您将把它放在工具栏下。
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<View
android:layout_width="match_parent"
android:layout_height="5dp"
android:background="@drawable/toolbar_shadow" />
</FrameLayout>
@绘制/ toolbar_shadow:
<?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>
答案 1 :(得分:1)
我建议您使用两种不同的布局(一种用于版本21,一种用于所有其他布局)并使用以下方式将它们包含在布局中:
<include layout="@layout/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
答案 2 :(得分:1)
要在工具栏下显示阴影,请使用Google Android设计支持库中提供的AppBarLayout
。以下是如何使用它的示例。
<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<android.support.v7.widget.Toolbar
android:layout_height="?attr/actionBarSize"
android:layout_width="match_parent"/>
</android.support.design.widget.AppBarLayout>
要使用Google Android设计支持库,请在build.gradle文件中输入以下内容:
compile 'com.android.support:design:22.2.0'
答案 3 :(得分:0)
我只有一个自定义的XML阴影,ImageView
<ImageView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/shadow"
android:layout_height="@dimen/shadow_height"
android:layout_width="match_parent"
android:src="@drawable/shadow_shape"
/>
及其可绘制文件夹中的图像资源shadow_shape.xml:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<gradient android:startColor="@color/shadow"
android:endColor="@color/transparent"
android:angle="-90" />
</shape>
根据您的需要修改@dimen/shadow_height
和@color/shadow
可以获得非常好的结果(较暗的@color/shadow
&amp;视图越高,假冒高程越高)。它不是原生的,但非常可定制。