FloatingActionButton
を使用しています。ユーザーは、onClick
イベント内でFABの背景色を切り替えることができる必要があります。
ただし、setBackgroundTintList
への推奨される呼び出しは、21以上のAPIからのみ互換性があるようです。
Lollipop以前のデバイスで-正しく-どうすればいいですか?使用できる代替手段はありますか?
前もって感謝します。
setSupportBackgroundTintList
も使用できます
背景のドロアブルに色合いを適用します。現在の色合いモード(デフォルトではSRC_IN)を変更しません。
その後のView.setBackground(Drawable)の呼び出しは、自動的に描画可能オブジェクトを変更し、指定された色合いと色合いモードを適用します。
ViewCompat.setBackgroundTintList()
も見てください
背景のドロアブルに色合いを適用します。
これは、API v21以降で実行すると常に有効になります。 API v21より前のプラットフォームで実行する場合、ビューがTintableBackgroundViewインターフェースを実装する場合にのみ有効になります。
私は解決策を見つけました ここでSO 私が以前に使用したことがあり、これはこれです:
public static void setButtonTint(Button button, ColorStateList tint) {
if (Build.VERSION.SDK_INT == Build.VERSION_CODES.Lollipop && button instanceof AppCompatButton) {
((AppCompatButton) button).setSupportBackgroundTintList(tint);
} else {
ViewCompat.setBackgroundTintList(button, tint);
}
}
それは私のために働く私もそれがあなたのために働くことを望みます。
シンプル:
fab.setBackgroundTintList(ColorStateList.valueOf(0xFF4CAF50));
fab
はもちろんFloatingActionButton
であり、0xFF4CAF50
単なる色の例
Kamil Sewerynがコメントで言ったように、fab.setBackgroundTintList()
がAndroid.support.design.widget.FloatingActionButton
のインスタンスで機能することを確認できます。
Samsung Galaxy s5(Android 6)とSamsung Galaxy s3(Android 4.3)でテストしました。どちらも正しく動作します。
XMLから、あなたは使うことができます
card_view:backgroundTint="@color/your_color"
どこ card_view
はxmlns:card_view="http://schemas.Android.com/apk/res-auto"