答案 0 :(得分:25)
只有在BottomNavigationView中将white设置为android:background时才有效。
这是我的代码,它正在运作:
<android.support.design.widget.BottomNavigationView
android:id="@+id/bottom_navigation"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:background="@color/white"
app:elevation="8dp"
app:itemIconTint="@color/bottom_color_state"
app:itemTextColor="@color/bottom_color_state"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintHorizontal_bias="0.52"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:menu="@menu/bottom_navigation_main" />
答案 1 :(得分:2)
我得到了解决方案。你需要添加背景属性和高程,否则它不会显示阴影。
答案 2 :(得分:1)
这是唯一对我有用的解决方案:
val background = bottomNavigation.background
if (background is MaterialShapeDrawable) {
background.shadowCompatibilityMode = SHADOW_COMPAT_MODE_ALWAYS
}
如此处建议: https://issuetracker.google.com/issues/124153644#comment2
答案 3 :(得分:1)
对于那些感兴趣的人,我还设法使用背景可绘制对象获得了一些阴影。但是,我必须使用白色,否则它将不起作用...
如果您想像我一样做角度,这会很有用。
drawable / gnt_rounded_corners_shape.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@android:color/white"/>
<corners android:bottomRightRadius="0dp"
android:bottomLeftRadius="0dp"
android:topLeftRadius="16dp"
android:topRightRadius="16dp" />
</shape>
和内部 layout / main_activity.xml
<com.google.android.material.bottomnavigation.BottomNavigationView
android:id="@+id/navigation"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:background="@drawable/gnt_rounded_corners_shape"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:menu="@menu/bottom_nav_menu"
android:elevation="8dp"
/>
结果:
答案 4 :(得分:0)
如果您不将CoordinateLayout
与BottomNavigationBar
一起使用,则可以用CardView
或MaterialCardView
包装导航,并将cardElevation
设置为所需的内容并将cardCornerRadius
设为零。