55

プログラムでボタンの色を設定する方法を知りたいですか?私は以下をコーディングしましたが失敗します:

Button11.setBackgroundColor(R.color.red);

ありがとう!!

4

10 に答える 10

103

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
于 2012-12-12T15:02:21.737 に答える
48

古いスレッドですが、何か新しいことを学びました。これが誰かに役立つことを願っています。

背景色を変更したいが他のスタイルを保持したい場合は、以下が役立つかもしれません。

button.getBackground().setColorFilter(ContextCompat.getColor(this, R.color.colorAccent), PorterDuff.Mode.MULTIPLY);
于 2015-12-14T06:17:01.947 に答える
6

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)
}

他の人がこの答えを見つけるのを助けるために投票してください-これを理解するのにかなり時間がかかりました^^

于 2020-05-23T23:46:15.260 に答える
5

次のように、プログラムでボタンに希望の色を設定できます。

Button11.setBackgroundColor(Android.Graphics.Color.parseColor("#738b28"));

また、次のようなボタンのテキストの色を指定することもできます。

Button11.setTextColor(Android.Graphics.Color.parseColor("#FFFFFF"));
于 2018-10-26T05:33:51.250 に答える
1

getColor()これを実行しようとすると、AndroidStudioから非推奨の警告が表示されることがわかりました。

Button11.setBackgroundColor(getResources().getColor(R.color.red))

したがって、以下の方法を実行することが、単純で最新のソリューションであることがわかりました。

Button11.setBackgroundColor(ContextCompat.getColor(context, R.color.red))

悪いコードスタイルと見なされるため、color引数でのハードコーディングは避けたいと思います。

編集:setBackgroundColor()自分のボタンで使用した後、内部のボタンのパディングが拡張されているのがわかりました。高さと幅の両方を「wrap_content」に設定するように戻す方法が見つかりませんでした。多分それはバグです。

ソース: https ://stackoverflow.com/a/32202256/6030520

于 2018-06-10T04:06:55.363 に答える
1

背景色の設定時にボタンのサイズを変更しない場合:

button.getBackground().setColorFilter(button.getContext().getResources().getColor(R.color.colorAccent), PorterDuff.Mode.MULTIPLY);

これはボタンのサイズを変更せず、古いAndroidバージョンでも機能します。

于 2018-09-12T18:22:45.920 に答える
1

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);

        }
    });

これによりボタンが変更されますが、背景の変更と似ています。

于 2020-05-31T12:06:23.463 に答える
1

@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);
于 2021-01-18T11:38:10.707 に答える
0
button.setBackgroundColor(getResources().getColor(R.color.red);

このビューの背景色を設定します。パラメータ:背景の色に色を付ける

R.color.redgenのコンパイル時に生成された参照です。

于 2012-12-12T15:05:22.667 に答える
0

使用した場合、スタイルに影響を与えることなく、ボタンの色に以下のコードを使用できます

 yourbtnid.background.setColorFilter(ContextCompat.getColor(context, yourcolor), PorterDuff.Mode.SRC)
于 2021-03-08T04:46:58.237 に答える