web-dev-qa-db-ja.com

プログラムでAndroid.support.designから背景色をMaterialButtonに変更する方法

次のコードで色をMaterialButtonに変更してみます。

var materialButton = findViewByid(R.id....) as MaterialButton
materialButton.setBackgroundColor( ContextCompat.getColor(this@MyActivity, R.color.myCustomColor));

通常のボタンで動作します。誰かアイデアはありますか?

8
Gustavo Mora

私は以下のような答えを見つけました:

次の行を変更しました

materialButton.setBackgroundColor( ContextCompat.getColor(this@MyActivity, R.color.myCustomColor));

materialButton.setBackgroundTintList(ContextCompat.getColorStateList(this@MyActivity, R.color.myCustomColor));

私はそれをそのようにテストし、それは完全に機能しました。

19
Gustavo Mora

Material Button内のXMLファイルでこの属性を呼び出すだけです。

 Android:backgroundTint=""
6
TARUN SHARMA

これを試してみましょう:

mButton.getBackground().setColorFilter(getResources().getColor(R.color.indian_red), PorterDuff.Mode.SRC_ATOP);
6
milton titus

これを試して

Drawable drawable = DrawableCompat.wrap(mButton.getBackground());
drawable.mutate();
DrawableCompat.setTint(drawable, getResources().getColor(R.color.my_color));
drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());
0
Rishabh876

MaterialButtonの背景を変更するには、colorAccentを変更する必要があります。

Android:background属性は使用しないでください。 MaterialButtonは独自の背景のドローアブルを管理します。新しい背景を設定すると、MaterialButtonは、導入した新しい属性が適切に機能することを保証できなくなります。デフォルトの背景が変更された場合、MaterialButtonは明確に定義された動作を保証できません。

塗りつぶされたボタンの場合、このクラスは、テーマの?attr/colorAccentを背景のティントカラーに使用し、テキストの色にホワイトを使用します。塗りつぶされていないボタンの場合、このクラスはテキストの色に?attr/colorAccentを使用し、背景の色合いに透明を使用します。

0
Min Khant Lu

materialButton.setBackgroundColor(ContextCompat.getColor(this @ MyActivity、R.color.myCustomColor));