Prämisse
Artikel zum BottomNavigationView
Entfernen von Schatten sind im Internet im Grunde wirkungslos, wie zum Beispiel typische Artikel Theme="@null"
. Deshalb habe ich dieses Problem recherchiert und beschlossen, einen effektiven Lösungsbeitrag zu schreiben.
Flusssparender Assistent: Attribute in BottomNavigationView hinzufügen: app:elevation="0dp"
kann Schatten entfernen .
Problembeschreibung
BottomNavigationView
, der vollständige Name in der XML-Datei lautet <com.google.android.material.bottomnavigation.BottomNavigationView />
, bei Verwendung sieht es so aus (die Navigationsleiste unten):
Wenn es BottomNavigationView
in der Mitte des Bildschirms platziert wird, wird der Schatten des gesamten Steuerelements vollständig angezeigt. Dieser Schatteneffekt ähnelt tatsächlich dem cardView
eingebauten Schatten. .
Lösung
theme="@null"
Es ist ungültig, wenn es direkt im Steuerelement hinzugefügt wird . Tatsächlich wird der Schatten durch die Höhe des Steuerelements implementiert. Das heißt, je höher das Steuerelement, desto größer ist der Schattenwurf. Dies können wir also elevation
durch dieses Attribut erreichen. Wenn der Schatten verschwinden soll, setzen Sie die Höhe des Steuerelements auf 0. Die vollständige Schreibmethode lautet:app:elevation="0dp"
<com.google.android.material.bottomnavigation.BottomNavigationView
android:id="@+id/nav_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:elevation="0dp"
...
app:menu="@menu/bottom_nav_menu" />
Wenn wir elevation
den Wert erhöhen und auf setzen app:elevation="30dp
, wird der Schatteneffekt größer und deutlicher:
Hinweis : Es gibt zwei im Steuerelement elevation
, eines ist android:elevation
und eines ist app:elevation
, dasjenige , das mit app is valid beginnt , und dasjenige, das mit android beginnt ist ungültig . Außerdem android:translationZ
scheint es die Z-Achse anzupassen, hat aber tatsächlich keine Auswirkung auf die Anpassung des Schattens.
Prinzip
Wie Sie der Ansicht entnehmen können BottomNavigationView
, theme
gibt es intern eine Einstellung elevation
und der Wert ist auf 8 dp eingestellt. Wenn wir also den Schatten anpassen möchten, stellen wir auch diesen ein elevation
.