BottomNavigationView - Schatten- und Ripple-Effekt

8

Ich war wirklich glücklich, als BottomNavigationView vor einer Woche veröffentlicht wurde, aber ich Ich bin mit einigen Problemen konfrontiert, die es mir unmöglich machen, es zu lösen. Ich sehe einen Schatten über der BottomNavigationView, genau wie die Google Fotos Android App uns zeigt:

Wenn wir auf einen Google Fotos-Menüpunkt tippen, sehen wir einen Welleneffekt, der wie das Symbol und die Textfarbe (wenn ausgewählt) blau gefärbt ist.

Bei der Implementierung der von Google bereitgestellten Lösung wird nur eine graue Welleneffektfarbe angezeigt, und schlimmer noch, sie wird nicht angezeigt, wenn wir die Hintergrundfarbe der unteren Navigationsansicht ( design:itemBackground="..." ) ändern.

Jemand weiß, wie man es löst?

    
Filipe de Lima Brito 29.10.2016, 05:44
quelle

5 Antworten

20

Folgendes habe ich erreicht:

Ripple-Effekt + Elevation-GIF

Ich habe eine Demo auf GitHub erstellt, um Ihnen zu helfen.

Verwenden Sie zunächst die neueste Support-Bibliothek compile "com.android.support:design:$SUPPORT_VERSION"

Es funktioniert nur, wenn Sie die weiße Hintergrundfarbe android:background="@android:color/white"

setzen

Hinweis: Dieser Ripple-Effekt verschwindet, wenn Sie app:itemBackground property verwenden oder in Ihrem Fall design:itemBackground="..." , also entfernen Sie ihn einfach.

%Vor%

Handhabung aktiviert / deaktiviert:

Sie müssen Selektor-Datei erstellen:

%Vor%

Wenn Sie den standardmäßigen Grauripple-Effekt ändern möchten, ändern Sie colorControlHighlight proproperty in AppTheme so, dass er wie folgt aussieht:

%Vor%

Verwenden Sie 26% Alpha für farbige Wellen.

%Vor%     
luksha 03.12.2016 15:33
quelle
6
  1. Für Schatten verwenden Sie die Höhe in Ihrer BottomNavigationView app:elevation="8dp" .
  2. Und für Ripples Effect müssen Sie nur app:itemBackground entfernen und android:background auf eine weiße Farbe setzen wie das android:background="@android:color/white"

Vollständiges Beispiel unten:

%Vor%     
Étienne Théodore 25.01.2017 14:12
quelle
0

Vielleicht möchten Sie Ihrer Schaltfläche einen Selektor hinzufügen wie:

%Vor%

/res/drawable/my_selector.xml:

%Vor%

Lesen Sie mehr: RippleDrawable

    
Kamran Ahmed 29.10.2016 06:47
quelle
0

Nimm dieses FrameLayout , das Schatten zeichnet, und diesen Farbverlauf Zeichnungs-XML :

%Vor%

Wickle dein BottomNavigationView in dieses Layout ein wie:

%Vor%

Leider wird der ursprüngliche Schatten unter der Ansicht gezeichnet, wir müssen diesen Aufwärtsschatten selbst nachahmen.

Vergessen Sie nicht, android:elevation="8dp" auch für DrawShadowFrameLayout hinzuzufügen.

Ein weiterer Ansatz besteht in der Erweiterung BottomNavigationView und dem Überschreiben von draw() , um dasselbe zu erreichen. Dies wird Ihnen helfen, ein FrameLayout in Ihrer Ansichtshierarchie zu verlieren.

    
Nikola Despotoski 01.11.2016 09:59
quelle
0

Dies ist ein Problem in der Design-Bibliothek und wurde gemeldet hier .

Der Schatten-Teil dieser Frage wurde bereits aufgelöst. Sie sollten daher Ihre Gradle-Abhängigkeiten für die Support- und Design-Bibliothek auf 25.0.1 aktualisieren.

Die Google-Ingenieure bestehen darauf, dass das Problem mit dem Ripple-Effekt ebenfalls behoben wurde, aber ich konnte es nicht richtig funktionieren lassen.

Ein Beispiel, wie das XML für BottomNavigationView aussehen könnte, sehen Sie hier:

%Vor%

Zeigen Sie das Problem an, um ihm Aufmerksamkeit zu verleihen.

    
Darwind 20.11.2016 23:16
quelle