android TextView:背景色を動的に設定しても機能しません


169

Androidのプログラムによる背景色の設定 TextView機能しないようです。何かが足りないんですよ!

TextView et = new TextView(activity);
et.setText("350");
et.setBackgroundColor(R.color.white);

このファイル(colors.xml)もres / valuesフォルダにあります

<resources>
        <color name="white">#ffffffff</color>
        <color name="black">#ff000000</color>
</resources>

[編集]:また、テキストの色を設定すると、TextViewが消えます。

TextView c1 = new TextView(activity);
c1.setTextColor(R.color.solid_red);
c1.setText("My Text");

回答:


332

使用する et.setBackgroundResource(R.color.white);


5
Android APIは本当に何かですが、なぜエラーをスローできなかったのですか?
タワニ2009

53
エラーではありませんので。setBackgroundColor()は、数値形式の色を取ります(たとえば、赤の場合は0xFFFF0000)。R.color.whiteも数字です。
CommonsWare 2009

6
ああ!これは、ユビキタスのintよりも列挙型を使用するほうが確実に優れているはずです。答えてくれてありがとう。
WojciechGórski2012

2
彼ら異なる型シグネチャを使用している可能性があります!1つはColorIdと呼ばれ、もう1つはHexColorなどと呼ばれます。どちらも整数ですが、同じ型で

1
非常に奇妙な。ドキュメントから:リソースは、Drawableオブジェクトまたは0を参照して背景を削除する必要があります。
Artem

73

これを試して:

TextView c1 = new TextView(activity);
c1.setTextColor(getResources().getColor(R.color.solid_red));
c1.setText("My Text");

色とリソースは同じタイプであることに同意しますが、この解決策を見つけるのに数時間も費やします。


2
私はそれを完全に理解していません(api docを調べています)が、機能します。ありがとうございます!
CodeJustin.com 2010

ありがとう、あなたは私を数時間救ってくれました!解決策がわかったので、それは理にかなっていますが、自分でこれを理解するには数時間かかると思います。
FreewheelNat、

ありがとう。Android APIは、実際には直感的でない場合があります。
suDocker 2011年

64

赤い色を設定するには:

textView.setBackgroundColor(0xfff00000);

または

<color name="solid_red">#fff00000</color>

textView.setBackgroundResource(R.color.solid_red);

1
これがより一般的な回答である場合にbadMonkeyの回答をエコーするには、透明性のために高位ビットをゼロ以外に設定する必要があります。AなしでRGBを指定すると、いつも引っ掛かってしまいます。背景を純粋な青に設定するには、0x0000ffではなく0xff0000ffを使用してください。そうしないと機能しません。
JohnnyLambada 2013

.xmlでは、<color>要素の値は、クラシックな6桁でのみ機能します。#FF0000
武器X

@WeaponX:透明色(8桁)でうまく機能します。
CoolMind '19年

@Weapn Xこの関数は4バイトの整数を取ります。6桁の16進数は3バイトです。

20

主要なアルファチャネルを考慮せずに数値カラーを作成していたのと同じような問題がありました。すなわち。 mytext.setTextColor(0xFF0000)(これは赤になると思います)。これはまた、100%透明である赤色であるがit = 0x00FF0000; 正しい100%不透明な値です0xFFFF0000か、mytext.setTextcolor(0xFFFF0000)


10

この1行のコードだけで、プログラムによってバックグラウンドが変更されました

tv.setBackgroundColor(Color.parseColor("#808080"));

8

まあ、Webサービスが「#CC2233」のような16進形式で色を返し、setBackGroundColor()を使用してこの色をtextViewに配置したかったので、android Colorクラスを使用して16進文字列のint値を取得し、それに渡しました言及された機能。すべてがうまくいった。これは例です:

String myHexColor = "#CC2233";
TextView myView = (TextView) findViewById(R.id.myTextView);
myView.setBackGroundColor(Color.pasrsehexString(myHexColor));

PSは他の解決策が私のために働かなかったのでこの答えを投稿しました。これが誰かを助けることを願っています:)


5

ここでは少し詳細です、

あなたが活動している場合はこれを使用してください

textview.setBackground(ContextCompat.getColor(this,R.color.yourcolor));

あなたがフラグメントにいる場合は、以下のコードを使用してください

textview.setBackground(ContextCompat.getColor(getActivity(),R.color.yourcolor));

recyclerviewアダプターを使用している場合は、以下のコードを使用してください

textview.setBackground(ContextCompat.getColor(context,R.color.yourcolor));

// use holder.textview if you are in onBindviewholder
//here context is passed from fragment

4

正しく実行する手順は次のとおりです。

  1. まず、次のようにMainActivity.javaでTextViewのインスタンスを宣言します。

    TextView mTextView;
  2. 次のようにテキストをDYNAMICALLY(必要な場合)に設定します。

    mTextView.setText("some_text");
  3. ここで、背景色を設定するには、次のようにres-> values-> colors.xmlファイルで独自の色を定義する必要があります。

    <resources>
        <color name="my_color">#000000</color>
    </resources>
  4. 次のように、Javaファイルで「my_color」カラーを使用して、背景を動的に設定できます。

    mTextView.setBackgroundResource(R.color.my_color);


3

Color.parseHexColor("17ee27")私にはColor.parseColor("17ee27")うまくいきませんでしたが、代わりに完璧に働きました。


2

それを行う2つの方法:

1. color.xmlファイルに次のような色を作成します。

<resources>
        <color name="white">#ffffff</color>
</resources>

そして、それを次のようにintアクティビティJavaクラスとして使用します:

et.setBackgroundResource(R.color.white);

2。

et.setBackgroundColor(getResources().getColor(R.color.white));
                or
et.setBackgroundColor(Color.parseColor("#ffffff"));



-10

android:textColor= "テキストビューが宣言されているxmlファイルで、uに指定したいテキストの色を使用できます。


プログラム的に... xmlではない
aLL
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.