使用工具栏时阴影不起作用(Lollipop appcompat-v7)

Mic*_*ael 14 android

如您所知,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" /> 
Run Code Online (Sandbox Code Playgroud)

以下是使用默认AppCompat AppBar的样子:http://imgur.com/0EiE1Vv

以下是使用自定义ToolBar的样子:http://imgur.com/GGEC6Tq

编辑:在alanv的帮助下,我想出了如何在工具栏下面制作阴影.但是,它与AppCompat中的默认设置不同.它只是一个微弱的阴影,如果我没记错的话,它与旧版本中使用的阴影资源相同.我正在努力寻找默认AppCompat栏的资源.

nat*_*rio 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"
    />
Run Code Online (Sandbox Code Playgroud)

及其图像资源 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>
Run Code Online (Sandbox Code Playgroud)

您可以根据您的需要进行调制@dimen/shadow_height,从而获得非常好的结果(视图越暗且越高,您的假海拔越高)。它不是原生的,但非常可定制。@color/shadow@color/shadow