web-dev-qa-db-ja.com

FABアイコンの色を設定

current fab
現在のFAB

'com.Android.support:design:22.2.0'ライブラリが提供するFAB(フローティングアクションボタン)ウィジェットのアイコンの色を緑から白に変更する方法を知りたいのですが。

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" />
47
Paradiesstaub

ColorFilterを使用してプログラムで変更できます。

//get the drawable
Drawable myFabSrc = getResources().getDrawable(Android.R.drawable.ic_input_add);
//copy it in a new one
Drawable willBeWhite = myFabSrc.getConstantState().newDrawable();
//set the color filter, you can use also Mode.SRC_ATOP
willBeWhite.mutate().setColorFilter(Color.WHITE, PorterDuff.Mode.MULTIPLY);
//set it to your fab button initialized before
myFabName.setImageDrawable(willBeWhite);
21

Android:tintプロパティを使用すると、このように色を設定できます

<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"
   />
181
Saleem Khan

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"/>

アイコンのデフォルトの色の変更を使用する場合は、app:tint="@null"

19
Miravzal

ドロアブルを取得するよりも簡単です。カラーフィルターにアクセスし、必要な色に設定するだけです。

FloatingActionButton myFab = (FloatingActionButton) findViewById(R.id.myfabid);

myFab.setColorFilter(Color.WHITE);
11
Daniel Campos

Googleデザインサイトの ic_add の白いバージョンを使用します。

Android:tintはきれいなソリューションのように見えますが、APIレベル21以下ではサポートされていません

ビットマップを使用すると、既存のアイコンの色をプログラムで変更するよりも、アプリの複雑さが軽減されます。複雑さが少ないことは、テストするものが少ないことを意味します:)

7
alexbirkett

FloatingActionButtonImageViewを拡張するため、ImageViewCompatを使用してアイコンに色を付けることができます。

ImageViewCompat.setImageTintList(
    floatingActionButton,
    ColorStateList.valueOf(Color.WHITE)
);
6
sfera