プログラムでボタンの色を設定する方法を知りたいですか?私は以下をコーディングしましたが失敗します:
Button11.setBackgroundColor(R.color.red);
ありがとう!!
R.color.red
はID(これもint
)ですが、色ではありません。
代わりに、次のいずれかを使用してください。
// If you're in an activity:
Button11.setBackgroundColor(getResources().getColor(R.color.red));
// OR, if you're not:
Button11.setBackgroundColor(Button11.getContext().getResources().getColor(R.color.red));
または、代わりに:
Button11.setBackgroundColor(Color.RED); // From android.graphics.Color
または、より多くのプロスキルについて:
Button11.setBackgroundColor(0xFFFF0000); // 0xAARRGGBB
古いスレッドですが、何か新しいことを学びました。これが誰かに役立つことを願っています。
背景色を変更したいが他のスタイルを保持したい場合は、以下が役立つかもしれません。
button.getBackground().setColorFilter(ContextCompat.getColor(this, R.color.colorAccent), PorterDuff.Mode.MULTIPLY);
2020年以降にあなたが探している答え:
setColorFilter(color, mode)
API 29以降非推奨になりました(ここで説明します)button.setBackgroundColor(color)
ボタンスタイルを台無しにするボタンの色を設定する適切な方法は、を使用することですBlendModeColorFilter()
(ドキュメントを参照)。
使用法:
btn.background.colorFilter = BlendModeColorFilter(color, BlendMode.MULTIPLY)
古いAPIも使用している場合:
fun setButtonColor(btn: Button, color: Int) {
if (Build.VERSION.SDK_INT >= 29)
btn.background.colorFilter = BlendModeColorFilter(color, BlendMode.MULTIPLY)
else
btn.background.setColorFilter(color, PorterDuff.Mode.MULTIPLY)
}
他の人がこの答えを見つけるのを助けるために投票してください-これを理解するのにかなり時間がかかりました^^
次のように、プログラムでボタンに希望の色を設定できます。
Button11.setBackgroundColor(Android.Graphics.Color.parseColor("#738b28"));
また、次のようなボタンのテキストの色を指定することもできます。
Button11.setTextColor(Android.Graphics.Color.parseColor("#FFFFFF"));
getColor()
これを実行しようとすると、AndroidStudioから非推奨の警告が表示されることがわかりました。
Button11.setBackgroundColor(getResources().getColor(R.color.red))
したがって、以下の方法を実行することが、単純で最新のソリューションであることがわかりました。
Button11.setBackgroundColor(ContextCompat.getColor(context, R.color.red))
悪いコードスタイルと見なされるため、color引数でのハードコーディングは避けたいと思います。
編集:setBackgroundColor()
自分のボタンで使用した後、内部のボタンのパディングが拡張されているのがわかりました。高さと幅の両方を「wrap_content」に設定するように戻す方法が見つかりませんでした。多分それはバグです。
背景色の設定時にボタンのサイズを変更しない場合:
button.getBackground().setColorFilter(button.getContext().getResources().getColor(R.color.colorAccent), PorterDuff.Mode.MULTIPLY);
これはボタンのサイズを変更せず、古いAndroidバージョンでも機能します。
setBackgroundColor()を使用すると、スタイルに影響します。したがって、前のボタンと同じプロパティの新しいスタイルを、異なる色で宣言します。
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="@color/green"/>
<corners android:radius="10dp"/>
</shape>
ここで、OnClickメソッドを使用します。
location.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
location.setBackgroundResource(R.drawable.green);
}
});
これによりボタンが変更されますが、背景の変更と似ています。
@finnmglasからさらに離れると、2021年現在のJavaの答えは次のとおりです。
if (Build.VERSION.SDK_INT >= 29)
btn.getBackground().setColorFilter(new BlendModeColorFilter(color, BlendMode.MULTIPLY));
else
btn.getBackground().setColorFilter(color, PorterDuff.Mode.MULTIPLY);
button.setBackgroundColor(getResources().getColor(R.color.red);
このビューの背景色を設定します。パラメータ:背景の色に色を付ける
R.color.red
genのコンパイル時に生成された参照です。
使用した場合、スタイルに影響を与えることなく、ボタンの色に以下のコードを使用できます
yourbtnid.background.setColorFilter(ContextCompat.getColor(context, yourcolor), PorterDuff.Mode.SRC)