ビューの背景色を設定する方法


179

ビュー(この場合はボタン)の背景色を設定しようとしています。

私はこのコードを使用します:

// set the background to green
v.setBackgroundColor(0x0000FF00 );
v.invalidate();

ボタンが画面から消えます。私は何を間違っていますか、そしてビューの背景色を変更する正しい方法は何ですか?

ありがとう。


1
正解です。実際、invalidate()を呼び出す必要はないと思います。ボタンが消えるとは、文字通りですか、またはボタンにテキストまたは画像が消えたという意味ですか。
RickNotFred 2010

回答:


281

ボタンを透明にしました。最初のバイトはアルファです。

試す v.setBackgroundColor(0xFF00FF00);


2
これは、このようなのEditTextの下線などなどあらゆる境界を削除すると、以下のEddieBの答えははるかに優れている
モルテンアイス

@arothはColor.Greenの方が優れていますか?argbでカラーコンプレックスを使用する場合 ...あなたの回答は非推奨です
15

2
@delive-もう一度来ますか? Color.GREENは非推奨ではなく、アルファバイトが含まれています。その値はであり、回答で提案されているものとまったく同じですが0xff00ff00人間が読めるという利点もあります。ほとんどの開発者は、人間が読める形式のソリューションを好みます。
2015

145

setBackgoundColorを呼び出すと、ボーダー、コーナー、パディングなど、既存のバックグラウンドリソースが上書きまたは削除されます。実行するのは、既存のバックグラウンドリソースの色を変更することです...

View v;
v.getBackground().setColorFilter(Color.parseColor("#00ff00"), PorterDuff.Mode.DARKEN);

さまざまな効果についてPorterDuff.Mode。*を試してください。


「既存のバックグラウンドリソースを上書き/削除する」というわけではありません。
Yousha Aleayoub

2
上記をv.invalidate()と一緒に使用する必要がありました。次の行に。
Hashim Akhtar 2016

1
この無駄な時間を試して、受け入れられた答えで進みました。v.getBackground()はnullpointer例外を出し、クラッシュしました。
Siddarth G 2017

これに加えてPorterDuff.Mode.SRC_INが解決されたので、背景の境界線が失われることはありません。
Guilherme Carvalho

123

これを行ういくつかの選択肢...

背景を緑に設定します。

v.setBackgroundColor(0x00FF00);

背景をアルファ付きの緑に設定します。

v.setBackgroundColor(0xFF00FF00);

Color.GREEN定数で背景を緑に設定します。

v.setBackgroundColor(Color.GREEN);

Colors.xmlで定義する背景を緑に設定します。

<?xml version="1.0" encoding="utf-8"?>
<resources>     
    <color name="myGreen">#00FF00</color> 
    <color name="myGreenWithAlpha">#FF00FF00</color> 
</resources>

そして使用:

v.setBackgroundResource(R.color.myGreen);

そして:

v.setBackgroundResource(R.color.myGreenWithAlpha);

またはより長い巻き:

v.setBackgroundColor(ContextCompat.getColor(getContext(), R.color.myGreen));

そして:

v.setBackgroundColor(ContextCompat.getColor(getContext(), R.color.myGreenWithAlpha));

getResources().getColor(...)廃止予定しまっstackoverflow.com/questions/31842983/...
ジュニアMayhé

5
また、次のようなものもあります。v.setBackgroundResource(R.color.myGreen);使用する場合colors.xml
厳しい2015年

メソッドがすでにそれを呼び出しているinvalidateことがわかる ように、呼び出しを削除しましたsetBackground...
ウェストン

v.setBackgroundColor(0x00FF00);彼らが機能していないと彼らが言う彼らのコードだけです。それが透明であることも期待します。
ウェストン2017

35

次のようにして、16進数の色を任意のリソースに設定できます。

View.setBackgroundColor(Color.parseColor("#e7eecc"));

16
// set the background to green
v.setBackgroundColor(0x0000FF00 );
v.invalidate();

コードはボタンを緑に設定しません。代わりに、ボタンを完全に非表示にします。

説明:色の16進値が間違っています。アルファ値がゼロの場合、色は見えなくなります。

正しい16進数値は0xFF00FF00、完全な不透明度の緑です。00とFFの間のアルファ値は透明になります。


12

そして、ビューの背景色を変更する正しい方法は何ですか?

上のいずれかの View?あなたが持っているものは正しいですが、あなたはinvalidate()電話を切るべきです。

ただし、一部にはViewsすでに背景があります。Aは、Buttonボタン自体の面:例えば、既に背景を有しています。この背景はでありStateListDrawableandroid-2.1/data/res/drawable/btn_default.xmlAndroid SDKインストールに含まれています。これは、次に、複数の密度で利用可能な9パッチのビットマップ画像の束を指します。グリーン目標を達成するには、これらすべてを複製して変更する必要があります。

要するに、の背景を変更しようとするよりも、別のUIパターンを見つける方が良いでしょうButton


OK、ボタンの背景について説明してくれてありがとう。9つのパッチビットマップ(developer.android.com/reference/android/graphics/NinePatch.html)は私にとって新しいものでした。ボタンを押したときに画面の色を変更したいだけです。ボタンはTextViewにあります。その色を変更しようとすると、コンソールメッセージ「DDMディスパッチレジストリ待機タイムアウト... ActivityManager:DDMチャンクをディスパッチできません52454151:ハンドラーが定義されていません」と画面上のダイアログ「アプリが予期せず停止しました」が表示されます。UIをもっと読む必要があると思います。ヒントを歓迎します。ありがとう。
Peter vdL 2010

12

画面に表示する最初の色を設定するには、このプロパティを関連するビューに追加することにより、関連するlayout.xml(より良いデザイン)で行うこともできます。

android:background="#FF00FF00"

質問は、色の変化が動的である必要があることを明確にします。
Peter vdL

11

追加してみてください:

setBackgroundColor(Color.parseColor("#FF0000"));

6

API min 16、ターゲット23で使用します

Button WeekDoneButton = (Button) viewWeeklyTimetable.findViewById(R.id.week_done_button);

WeekDoneButton.setBackgroundColor(ContextCompat.getColor(getActivity(), R.color.colorAccent));

通常、デフォルトの色は多くありません。ここで説明するように新色がRES /値/色で定義することができdeveloper.android.com/samples/BasicMediaRouter/res/values/...
Krystian



4

この質問では、ビューの背景色の変更について説明します。その答えの1つとして、実行時に背景色を変更する方法について説明されています。明らかに、画面上の他のオブジェクトを変更する方法を調べますが、これは、少なくともボタンをクリックしたときにビューの背景色を変更できるようにすることから始めるのに適しています。


3

Android 6での説明はContextCompactを使用します

        view.setBackgroundColor( ContextCompat.getColor(this, R.color.your_color));


2

kotlinあなたはこのようにそれを行うことができます:

val backgroundColor = R.color.whatever_color_you_like
view.setBackgroundColor(getColorCompat(backgroundColor))

getColorCompat()拡張関数はどこにありますか:

/**
 * Extension method to provide simpler access to {@link ContextCompat#getColor(int)}.
 */

 fun Context.getColorCompat(color: Int) = ContextCompat.getColor(this, color)

1
view.setBackgroundColor(R.color.primaryColor);

以前の色の値に色を追加するので、私は別の色を持っています。

私にとってうまくいくのは:

view.setBackgroundResource(R.color.primaryColor);

1

我々が持っているとしましょう原色のvalues=>colors.xmlのように:

<resources>
    <color name="primary">#FDD835</color>
</resources>

したがって、カスタムカラーを使用したい場合は、コンストラクタ/メソッドを使用しsetBackgroundColor(@ColorInt int Color)た注釈@SuppressLint("ResourceAsColor")が必要です。これは次のように使用されます。

    @SuppressLint("ResourceAsColor")
    public _LinearLayout(Context context) {
        super(context);

        // Formatting our layout : )
        super.setBackgroundColor(R.color.primary);

        ....


    }

0

int引数にを渡す必要があります。

最初の例:

view.setBackgroundColor(-500136)

2番目の例:

int colorId = R.color.green;

view.setBackgroundResource(colorId);

0

これはうまくいくはずです: v.setBackgroundColor(0xFF00FF00);


0

上記の方法をすべて試しました。しかし、私は私が必要とするものを達成していません。これが私の試みです。色に16進コードを使用していて、画像の背景として色を設定したい場合、これはKotlinコードです。

val bitmap = Bitmap.createBitmap(30, 30, Bitmap.Config.ARGB_8888)
val canvas = Canvas(bitmap)
val colorCode = "#ffffff"
canvas.drawColor(Color.parseColor(colorCode))
mImageViewLogo.setImageBitmap(bitmap)
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.