Kürzlich habe ich diese Beiträge gelesen:
Android Design Support-Bibliothek
Android Support Library, Version 22.2.0
Aber keiner von ihnen gibt mir ein detailliertes Beispiel für das Erstellen eines neuen FloatingActionButton
. So schwer zu verstehen, stelle ich diese Frage.
Kann mir jemand ein Beispiel geben?
Jede Hilfe wird sehr geschätzt. Danke im Voraus.
BEARBEITEN
Ich habe gerade einige Probleme bei FloatingActionButton
(FAB) gefunden und möchte eine andere Antwort verbessern. Siehe meine Antwort unten.
Antworten:
Fügen Sie in Ihrer
build.gradle
Datei Folgendes hinzu:AndroidX-Hinweis: Google führt neue AndroidX-Erweiterungsbibliotheken ein , um die älteren Support- Bibliotheken zu ersetzen. Um AndroidX zu verwenden, stellen Sie zunächst sicher , haben Sie Ihre aktualisierte
gradle.properties
Datei , bearbeitet ,build.gradle
um SatzcompileSdkVersion
zu28
(oder höher), und verwenden Sie die folgende Zeile anstelle der bisherigencompile
ein.Stellen Sie als Nächstes in Ihrem
themes.xml
oder einem anderenstyles.xml
Element sicher, dass Sie dies festlegen - es ist die Akzentfarbe Ihrer App - und die Farbe Ihres FAB, sofern Sie diese nicht überschreiben (siehe unten):Im XML des Layouts:
Wenn Sie die oben genannte AndroidX-Materialbibliothek verwenden, verwenden Sie stattdessen Folgendes:
Weitere Optionen finden Sie in den Dokumenten (Materialdokumente hier) (
setRippleColor
usw.), aber eine der Anmerkungen ist:Ein weiteres interessantes: Um die Hintergrundfarbe von nur einem FAB zu ändern, fügen Sie Folgendes hinzu:
(zum Beispiel um es in rot zu ändern) in das obige XML.
Wie auch immer, im Code, nachdem die Ansicht der Aktivität / des Fragments aufgeblasen wurde ....
Beobachtungen:
Hier ist eine Möglichkeit, die Polsterung zu entfernen oder zu ändern, wenn zu viel vorhanden ist:
Außerdem wollte ich das FAB programmgesteuert auf der "Naht" zwischen zwei Bereichen in einem RelativeLayout platzieren, indem ich die Höhe des FAB ergriff, durch zwei teilte und diese als Randversatz verwendete. Aber myFab.getHeight () gab Null zurück, selbst nachdem die Ansicht aufgeblasen war, wie es schien. Stattdessen habe ich einen ViewTreeObserver verwendet, um die Höhe erst nach dem Anlegen zu ermitteln und dann die Position festzulegen. Siehe diesen Tipp hier . Es sah so aus:
Ich bin mir nicht sicher, ob dies der richtige Weg ist, aber es scheint zu funktionieren.
Wenn Sie die FAB auf einer „Naht“ möchten , können Sie verwenden ,
layout_anchor
undlayout_anchorGravity
hier ist ein Beispiel:Denken Sie daran, dass Sie die Schaltfläche automatisch aus dem Weg springen lassen können, wenn eine Snackbar angezeigt wird, indem Sie sie in ein CoordinatorLayout einbinden .
Mehr:
quelle
android:backgroundTint="#FF0000"
zum Beispiel der FloatingActionBar im XML hinzu. (Hinzufügen zur Antwort)sp
in der Evelation-Eigenschaft verwenden. Es sollte seinapp:elevation="4dp"
FloatingActionButton
zu a hinzufügenCoordinatorLayout
, können Sie das FAB verwendenapp:layout_anchor="element_with_seam"
undapp:layout_anchorGravity="bottom|right|end"
korrekt über einer Naht positionieren - siehe das Layout activity_detail von cheesesquareIch habe gerade einige Probleme mit FAB gefunden und möchte eine weitere Antwort verbessern.
setRippleColor-Problem
Das Problem tritt also auf, sobald Sie die Welligkeitsfarbe (FAB-Farbe auf gedrückt) programmgesteuert eingestellt haben
setRippleColor
. Wir haben jedoch noch eine alternative Möglichkeit, dies festzulegen, indem wir Folgendes anrufen:Ihr Projekt muss folgende Struktur haben:
Und der Code von
fab_ripple_color.xml
ist:Ändern Sie zum Schluss Ihr FAB leicht:
Stellen Sie für API-Level 21 und höher den Rand rechts und unten auf 24 dp ein:
Konstruktionsanleitungen für FloatingActionButton
Wie Sie oben in meinem FAB-XML-Code sehen können, habe ich Folgendes festgelegt:
Durch diese Attribute einstellen, müssen Sie nicht auf Set
layout_marginTop
undlayout_marginRight
wieder (nur auf Pre-Lollipop). Android platziert es automatisch auf der rechten Corned-Seite des Bildschirms, was dem normalen FAB in Android Lollipop entspricht.Oder Sie können dies verwenden in
CoordinatorLayout
:elevation
und 12dp .pressedTranslationZ
quelle
pressedTranslationZ
. Das wusste ich nicht.app:elevation
und nicht einstellenapp:pressedTranslationZ
. Ihr Standardwert ist der in den Richtlinien für die Materialkonstruktion definierte. Wie auch immer, e.shishkin hat recht, die Werte sindapp:elevation:6dp
undpressedTranslationZ:6dp
. Sie können es im com.android.support.design QuellcodeFloatingActionButton
erstreckt sichImageView
. Es ist also so einfach wie das Einfügen einesImageView
in Ihr Layout. Hier ist ein XML-Beispiel.app:borderWidth="0dp"
wird als Problemumgehung für Höhenprobleme hinzugefügt.quelle
für AndroidX wie verwenden
quelle
Wenn Sie bereits alle Bibliotheken hinzugefügt haben und es immer noch nicht funktioniert, verwenden Sie:
anstatt:
Und alles wird gut funktionieren :)
quelle