删除高程阴影而不删除高程本身

时间:2017-12-09 12:12:35

标签: android android-toolbar shadow android-appbarlayout android-elevation

AppBarLayout是否有办法不投影并保持其高程?

<android.support.design.widget.AppBarLayout
        app:elevation="0dp">

2 个答案:

答案 0 :(得分:14)

我只是遇到了同样的问题,这就是为我解决的问题:

val withElevationNoShadow = view.findViewById<*your view type*>(*your view id*)
withElevationNoShadow.outlineProvider = null

请记住,上面的代码是Kotlin,但是Java几乎相同。

之所以可行,是因为阴影是由ViewOutlineProvider绘制的。通过将视图的ViewOutlineProvider设置为null,可以删除默认阴影。

有关ViewOutlineProvider的更多信息,请检出

https://developer.android.com/reference/android/view/ViewOutlineProvider

https://developer.android.com/training/material/shadows-clipping

答案 1 :(得分:13)

要完成M.Sandholtz的答案,您还可以使用XML定义此内容,并带有outlineProvider =“ none”。

<View
    android:id="@+id/viewElevationNoShadow"
    android:outlineProvider="none"
    android:elevation="4dp"/>