J'ai essayé de définir l'élévation à partir de xml et par programme les deux. Mais rien ne fonctionne .
Cela ne fonctionne que si vous définissez le blanc comme Android: arrière-plan dans BottomNavigationView.
Voici mon code et ça marche:
<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" />
J'ai la solution. Vous devez ajouter un attribut d'arrière-plan avec l'élévation sinon il ne montrera pas l'ombre.
Pour ceux qui sont intéressés, j'ai également réussi à obtenir de l'ombre en utilisant un arrière-plan dessinable. Cependant, j'ai dû utiliser la couleur blanche sinon ça ne marche pas ...
Cela peut être utile si vous voulez faire des angles comme moi.
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>
et à l'intérieur 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"
/>
résultat :
C'est la seule solution qui a fonctionné pour moi:
val background = bottomNavigation.background
if (background is MaterialShapeDrawable) {
background.shadowCompatibilityMode = SHADOW_COMPAT_MODE_ALWAYS
}
comme suggéré ici: https://issuetracker.google.com/issues/124153644#comment2