Bei Verwendung des AppBarLayout
Widgets in der Designunterstützungsbibliothek wird unten in der Symbolleiste ein Schatten angezeigt. Wie kann ich diesen Schatten entfernen?
android
android-layout
Abdul Rehman
quelle
quelle
setOutlineProvider
Dieses Problem tritt nur auf, wenn die API-Version> = 21 ist. Wenn Sie die Höhe nicht ändern möchten, können Sie Folgendes verwenden:
Denken Sie daran, die API-Version zu überprüfen
EDIT:
Schlag ist der Quellcode von
setOutlineProvider
.Es wurde gesagt, dass
If the ViewOutlineProvider is null, if querying it for an outline returns false, or if the produced Outline is {@link Outline#isEmpty()}, shadows will not be cast.
Wenn Sie also Schatten entfernen möchten, sollten Sie diese Methode verwenden, anstatt sie festzulegen
app:elevation
. Es scheint, dass das Ändern der Höhe zum Entfernen von Schatten eine Art Nebeneffekt ist. In einigen Fällen kann das Ändern der Höhe zu anderen Problemen führen.quelle
Für alle, die die Symbolleiste nicht verwenden möchten
bringToFront()
undelevation="0dp"
verschwinden lassen:app:elevation="0dp"
kombiniert mitandroid:translationZ="0.1dp"
arbeitete für mich.quelle
Mit den neuesten Appcompat-Versionen funktioniert die Trickeinstellung
app:elevation="0.1dp"
in XML nicht mehr.Bisher habe ich zwei Lösungen gefunden.
app:elevation
Versuchen Sie statt der Einstellung einen stateListAnimator zu verwenden. Zum Beispiel im Code:Eine einfachere Möglichkeit besteht darin, dass Sie weiterhin
app:elevation="0dp"
wie gewohnt in XML, jedoch im Code festlegen :Dank geht an diese beiden Diskussionen:
Die Symbolleiste verschwindet, wenn die Höhe für AppBarLayout festgelegt wird
Wenn App: Elevation = "0dp" eingestellt ist, wird das Hamburgermenü nicht in der Symbolleiste angezeigt
quelle
Verwenden Sie
android:stateListAnimator="@null"
. Keine Nebenwirkung.quelle
Ich habe versucht,
app:elevation="0dp"
aber die Symbolleiste verschwindet, aber mitapp:elevation="0.1dp"
hat der Trick gemacht.Hoffe das hilft jemand anderem.
quelle
v25.0.0
.App hinzufügen: height = "0dp" in Ihrem AppBarLayout. wie dieses Beispiel
quelle
Programmatisch können Sie Folgendes verwenden: getSupportActionBar (). SetElevation (0.0f);
quelle
Auf diese Weise habe ich
app:elevation="0dp"
den Schatten entfernt. Funktioniert einwandfrei.quelle