DrawerLayout setDrawerShadow和setDrawerElevation都不起作用(支持23.0.1)

时间:2015-10-30 20:52:14

标签: android material-design android-support-library

我在更新支持库后试图在我的导航抽屉上设置阴影但由于某种原因没有任何工作,我感到难过。

我遇到过这个问题,但它的解决方法是使用setElevation,这对我来说也不起作用:https://code.google.com/p/android/issues/detail?id=184434

发布的代码真的不多,但我在讨论的内容可供参考:

int currentapiVersion = android.os.Build.VERSION.SDK_INT;

if (currentapiVersion >= android.os.Build.VERSION_CODES.LOLLIPOP) {
    mDrawerLayout.setDrawerElevation(25f);
} else {
    mDrawerLayout.setDrawerShadow(R.drawable.left_drawer_shadow, GravityCompat.START);
}

我使用的是ScrimInsetsFrameLayout,但这不应该导致问题AFAIKT。

有什么想法吗?

1 个答案:

答案 0 :(得分:4)

可能发生的事情:

由于支持lib 23 v21 +设备在这种情况下忽略自定义drawable。使用本机内置高程阴影。请参阅:this issue

这是踢球者:透明元素没有阴影。

默认情况下,高程阴影是从视图background-outline中绘制的。如果视图没有背景,阴影将不会显示。

如果您的视图没有自己的背景,请使用大纲提供程序,例如:

android:outlineProvider="bounds"

应该做的伎俩。可在此处找到该文档ViewOutlineProvider。 简而言之:

  

View构建其Outline的接口,用于阴影投射和剪切。

此处提供了更多信息和深入解释:Android "elevation" not showing a shadow