aktuelle FAB
Ich möchte wissen, wie die Symbolfarbe des FAB-Widgets (Floating Action Button), das von der Bibliothek 'com.android.support:design:22.2.0' bereitgestellt wird, von grün auf weiß geändert wird.
style.xml
<resources>
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="colorPrimary">@color/color_primary</item>
<item name="colorPrimaryDark">@color/color_primary_dark</item>
<item name="colorAccent">@color/accent</item>
</style>
<color name="color_primary">#00B33C</color>
<color name="color_primary_dark">#006622</color>
<color name="accent">#FFB366</color>
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<include android:id="@+id/toolbar" layout="@layout/toolbar" />
<TextView android:id="@+id/text"
android:text="@string/hello_world"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="16dp"
android:paddingTop="16dp"
android:textSize="20sp" />
<android.support.v7.widget.RecyclerView
android:id="@+id/recycler_view"
android:scrollbars="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="8dp"
android:paddingRight="8dp"
android:paddingTop="8dp"
android:paddingBottom="16dp" />
</LinearLayout>
<android.support.design.widget.FloatingActionButton
android:id="@+id/fab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="end|bottom"
android:src="@android:drawable/ic_input_add"
android:layout_margin="24dp"
app:elevation="6dp"
app:pressedTranslationZ="12dp"
app:borderWidth="0dp" />
android
floating-action-button
Paradiesstaub
quelle
quelle
PorterDuff.Mode.SRC_ATOP
und VerwendenDrawable myFabSrc = ResourcesCompat.getDrawable(getResources(), android.R.drawable.ic_input_add, getTheme());
FloatingActionButton
das imcom.google.android.material
Paket verwenden, sollten Sieapp:tint
anstelle von hinzufügenandroid:tint
.Mit der Eigenschaft android: tint können Sie die Farbe wie folgt einstellen
<android.support.design.widget.FloatingActionButton android:id="@+id/fab" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="bottom|end" android:tint="@android:color/white" android:src="@android:drawable/ic_input_add" />
quelle
android:tint
scheint nur in API Level 21 und höher unterstützt zu werden :( developer.android.com/training/material/drawables.htmlWenn Sie verwenden
Material Components
<com.google.android.material.floatingactionbutton.FloatingActionButton android:id="@+id/fab" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="16dp" android:layout_gravity="bottom|end" app:fabSize="normal" app:tint="@color/colorAccent" app:srcCompat="@drawable/ic_google"/>
Wenn Sie die Standardfarbe des Symbols verwenden möchten, ändern Sie diese
app:tint="@null"
quelle
app:backgroundTint=""
für die Hintergrundfarbe undapp:tint=""
für den Bildton.android:tint
sondern eherapp:tint
.Es ist einfacher als die Zeichenbilder zu erhalten. Sie müssen nur auf den Farbfilter zugreifen und ihn auf die gewünschte Farbe einstellen.
quelle
yourFab.setColorFilter(getResources().getColor(R.color.red));
android:tint
für API 21 und höher. Es funktioniert auch, wenn Sie die Support-Bibliothek verwendenandroid.support.design.widget.FloatingActionButton
Sie müssen sich ändern
app:tint
, damit das funktioniert.android:tint
Ich habe nichts geändert.quelle
Verwenden Sie die weiße Version von ic_add von der Google Design-Website.
android:tint
sieht aus wie eine saubere Lösung, wird jedoch unterhalb der API-Ebene 21 nicht unterstütztDie Verwendung einer Bitmap erhöht die Komplexität Ihrer App als der Versuch, die Farbe eines vorhandenen Symbols programmgesteuert zu ändern. Weniger Komplexität bedeutet weniger Dinge zu testen :)
quelle
android:tint
für dieandroid.support.design.widget.FloatingActionButton
in der Support-Bibliothek definierten Geräte auch auf Geräten mit niedrigerer API-Ebene funktioniert. Ich habe es gerade an einem JellyBean-Image (API 16) getestet.Da
FloatingActionButton
erweitertImageView
, können wir verwenden,ImageViewCompat
um das Symbol zu tönen:ImageViewCompat.setImageTintList( floatingActionButton, ColorStateList.valueOf(Color.WHITE) );
quelle
Wenn Sie Material FAB verwenden, können Sie es mithilfe des folgenden Codes in Kotlin programmgesteuert formatieren.
fab.supportImageTintList = ContextCompat.getColorStateList(context, R.color.fab_icon_tint)
quelle