Ich habe versucht, die Farbe der schwebenden Aktionstaste von Material zu ändern, aber ohne Erfolg.
<android.support.design.widget.FloatingActionButton
android:id="@+id/profile_edit_fab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="end|bottom"
android:layout_margin="16dp"
android:clickable="true"
android:src="@drawable/ic_mode_edit_white_24dp" />
Ich habe versucht hinzuzufügen:
android:background="@color/mycolor"
oder per Code:
FloatingActionButton fab = (FloatingActionButton) rootView.findViewById(R.id.profile_edit_fab);
fab.setBackgroundColor(Color.parseColor("#mycolor"));
oder
fab.setBackgroundDrawable(new ColorDrawable(Color.parseColor("#mycolor")));
Aber keines der oben genannten hat funktioniert. Ich habe auch die Lösungen in der vorgeschlagenen doppelten Frage ausprobiert, aber keine davon funktioniert. Der Knopf blieb grün und wurde auch ein Quadrat.
PS Es wäre auch schön zu wissen, wie man einen Welleneffekt hinzufügt, konnte das auch nicht verstehen.
Antworten:
Wie in der Dokumentation beschrieben , wird standardmäßig die im format.xml- Attribut colorAccent festgelegte Farbe verwendet .
Wenn Sie die Farbe ändern möchten
Wie @Dantalian in den Kommentaren erwähnt, wenn Sie auf das Symbol Farbe für Design Support - Bibliothek ändern möchten bis zu v22 (einschließlich) , können Sie
Für die Design Support Library seit Version 23 können Sie Folgendes verwenden:
Auch bei
androidX
Bibliotheken müssen Sie in Ihrem XML-Layout einen 0-DP-Rahmen festlegen:quelle
Vijet Badigannavars Antwort ist richtig, aber die Verwendung
ColorStateList
ist normalerweise kompliziert und er hat uns nicht gesagt, wie es geht. Da wir uns oft darauf konzentrierenView
, die Farbe im normalen und gedrückten Zustand zu ändern , werde ich weitere Details hinzufügen:Wenn Sie die
FAB
Farbe im Normalzustand ändern möchten , können Sie einfach schreibenWenn Sie die
FAB
Farbe im gedrückten Zustand ändern möchten , können Sie dank Design Support Library 22.2.1 einfach schreibenWenn Sie dieses Attribut festlegen, wird beim langen Drücken der
FAB
Taste an Ihrem Berührungspunkt eine Welligkeit mit Ihrer Farbe angezeigt, die sich in der gesamten Oberfläche von zeigtFAB
. Bitte beachten Sie, dass sichFAB
die Farbe im Normalzustand nicht ändert . Unterhalb von API 21 (Lollipop) gibt es keinen Welleneffekt, aberFAB
die Farbe ändert sich immer noch, wenn Sie darauf drücken.Wenn Sie einen komplexeren Effekt für Status implementieren möchten, sollten Sie sich eingehend mit dieser
ColorStateList
SO-Frage befassen : Wie erstelle ich ColorStateList programmgesteuert? .UPDATE: Danke für @ Kaitlyns Kommentar. Um den Strich von FAB mit backgroundTint als Farbe zu entfernen, können Sie
app:borderWidth="0dp"
in Ihrer XML festlegen .quelle
app:borderWidth
programmgesteuert festzulegen? DankeFloatingActionButton
ich mir den Quellcode von angesehen habe , befürchte ich, dass Sie ihn momentan nicht programmgesteuert einstellen können, da es keinen Setter für gibtmBorderWidth
.Wie Vasil Valchev in einem Kommentar feststellte, ist es einfacher als es aussieht, aber es gibt einen subtilen Unterschied, den ich in meinem XML nicht bemerkt habe.
Beachten Sie, dass es ist:
und nicht
quelle
android:backgroundTint=""
aus API-Level 21 und sind Teil des Lollipop-Materialdesigns und werden unterhalb von Lollipop ignoriert. Außerdem ändert sich dieFAB
Farbe nicht vollständig, da es sich nicht um eine Volltonfarbe handelt. Sie müssen die verwendenapp:
, damit es funktioniert.android:color
meine App abgestürzt und hat mich verrückt gemacht! Danke, dass du meine AppWenn Sie versuchen, die Farbe von FAB mithilfe der App zu ändern, liegt ein Problem vor. Rahmen der Schaltfläche haben unterschiedliche Farben, was Sie also tun müssen:
und im Code die Farbe einstellen:
quelle
benutz einfach,
nicht verwenden,
quelle
Das FAB ist basierend auf Ihrem farbig
colorAccent
.quelle
quelle
Andere Lösungen können funktionieren. Dies ist der 10-Pfund-Gorilla-Ansatz, der den Vorteil hat, in diesem und ähnlichen Fällen allgemein anwendbar zu sein:
Styles.xml:
Ihr Layout xml:
quelle
String types not allowed (at 'theme' with value 'AppTheme.FloatingAccentButtonOverlay')
. Vielleicht fehlt mir ein Punkt mit der styles.xml ....android:theme="@style/AppTheme.FloatingAccentButtonOverlay"
aber diese Lösung funktioniert nicht für mich so oder so ...Das Dokument schlägt vor, dass standardmäßig @ color / akzent verwendet wird. Aber wir können es auf Code überschreiben, indem wir verwenden
Denken Sie auch daran,
Die Mindest-API-Version für die Verwendung dieser Bibliothek beträgt 15, Sie müssen sie also aktualisieren! Wenn Sie es nicht tun möchten, müssen Sie ein benutzerdefiniertes Zeichen definieren und es dekorieren!
quelle
Ändern der Hintergrundfarbe der schwebenden Aktionsschaltfläche mithilfe der folgenden Zeile
Ändern der Symbolfarbe der schwebenden Aktionsschaltfläche
quelle
Dank Autocomplete. Nach ein paar Treffern und Versuchen hatte ich Glück:
- oder - (beide sind im Grunde dasselbe)
Dies funktionierte für mich unter API Version 17 mit der Designbibliothek 23.1.0.
quelle
Ich habe das gleiche Problem und es schnappt mir alles die Haare. Vielen Dank für diese https://stackoverflow.com/a/35697105/5228412
Was wir tun können..
es funktioniert gut für mich und wünsche für andere, die hier erreichen werden.
quelle
Beachten Sie, dass Sie Farben in res / values / color.xml hinzufügen und das Attribut in Ihre Fab aufnehmen
quelle
Mit dem Werkstoff Thema und den Materialkomponenten
FloatingActionButton
standardmäßig nimmt es die Farbe in Set -styles.xml
AttributecolorSecondary
.app:backgroundTint
Attribut in XML verwenden:Sie können verwenden
fab.setBackgroundTintList();
Sie können Ihren Stil mithilfe des
<item name="backgroundTint">
Attributs anpassenmaterialThemeOverlay
Attribut die Standardfarben nur für einige Komponenten überschreiben:quelle
Neue Themenattributzuordnung für Floating Action Button in Material 1.1.0
In Ihrem App-Thema:
quelle
Wenn Sie die Datenbindung verwenden , können Sie Folgendes tun:
Ich habe ein sehr einfaches Beispiel gemacht
quelle
Ich habe es so gemacht android: background = "@ color / colorAccent" Ich gehe einfach zu Ordner res und klicke dann auf Ordnerwerte und dann auf Farben.xml in Farben.xml Ich ändere einfach die Farbe von colorAccent und rufe es in android: Hintergrund und es ist geschafft
quelle
Der Punkt, den wir vermissen, ist, dass es wichtig ist, an dem Wert zu arbeiten, den Sie für diese Farbe wünschen, bevor Sie die Farbe auf der Schaltfläche festlegen. Sie können also zu Werte> Farbe gehen. Sie finden die Standardfarben, aber Sie können auch Farben erstellen, indem Sie sie ausschneiden und einfügen und die Farben und Namen ändern. Dann ... wenn Sie die Farbe der schwebenden Schaltfläche (in activity_main) ändern, können Sie die von Ihnen erstellte auswählen
Beispiel - Code für Werte> Farben mit Standardfarben + 3 weitere Farben, die ich erstellt habe:
Jetzt mein Floating Action Button mit der Farbe, die ich erstellt und "corPar" genannt habe:
Es hat bei mir funktioniert. Viel Glück!
quelle
Wenn Sie einen schwebenden Aktionsknopf ohne Zeichen haben, können Sie den Farbton programmgesteuert ändern, indem Sie:
quelle
Fügen Sie Farben in die Datei color.xml ein und fügen Sie dann diese Codezeile hinzu ...
floatingActionButton.setBackgroundTintList(ColorStateList.valueOf(getResources().getColor(R.color.fab2_color)));
quelle
Sie können diesen Code verwenden, wenn Sie die Farbe programmgesteuert ändern möchten
quelle
verwenden
app: backgroundTint = "@ color / orange" in
quelle
Für das Materialdesign habe ich gerade die Farbe der schwebenden Aktionsschaltfläche wie folgt geändert. Fügen Sie die folgenden zwei Zeilen in Ihre XML-Datei für schwebende Aktionsschaltflächen ein. Und fertig,
quelle
in Kotlin:
quelle