コードでTextViewのテキストの色を設定するにはどうすればよいですか?


544

XMLではtextColor、などの属性によってテキストの色を設定できますandroid:textColor="#FF0000"。しかし、どのようにしてコーディングによって変更するのですか?

私は次のようなことを試しました:

holder.text.setTextColor(R.color.Red);

どこにholderちょうどクラスであり、text型ですTextView。赤は文字列に設定されたRGB値(#FF0000)です。

ただし、赤ではなく別の色で表示されます。どのような種類のパラメーターをsetTextColor()で渡すことができますか?ドキュメンテーションでは、と書いてありますが、それはintリソース参照値なのでしょうか?


コードでUIを微調整することに関する注意事項として、設計時にUIを表示する利点を考慮して、ランタイムの変更を最小限に抑えてください。
AlikElzin-kilaka 2016年

回答:


1245

あなたは使うべきです:

holder.text.setTextColor(Color.RED);

もちろん、Colorクラスのさまざまな関数を使用して、同じ効果を得ることができます。

  • Color.parseColor (手動)(LEXが使用するように)

    text.setTextColor(Color.parseColor("#FFFFFF"));
  • Color.rgbおよびColor.argbManual rgb)(Manual argb)(Ganapathyが使用するように)

    holder.text.setTextColor(Color.rgb(200,0,0));
    holder.text.setTextColor(Color.argb(0,200,0,0));
  • そしてもちろん、XMLファイルで色を定義したい場合は、これを行うことができます:

    <color name="errorColor">#f00</color>

    このgetColor()関数は非推奨1なので、次のように使用する必要があります。

    ContextCompat.getColor(context, R.color.your_color);
  • 次のように、プレーンなHEXを挿入することもできます。

    myTextView.setTextColor(0xAARRGGBB);

    最初にアルファチャネルがあり、次にカラー値。

もちろん、完全なマニュアルをご覧ください。パブリッククラスColor extends Objectです。


1このコードは以前もここにありました:

textView.setTextColor(getResources().getColor(R.color.errorColor));

このメソッドはAndroid Mで非推奨になりました。ただし、例が示すように、サポートライブラリのcontextCompatから使用できます。


2
さらに、テキストがリンクの場合は、text.setLinkTextColor(...);を使用する必要があります。コードまたはXMLのandroid:textColorLink = "..."
WOUNDEDStevenJones

1
@Nanne R.color.XXXが色への参照であるとあなたの回答が述べているといいですね。わかりやすくするために、(例のように)逆参照する必要があることを意味します。
nyaray 2013

どういう意味かわかりませんか?のように、逆参照されているため、より多くのリソースを使用しますか、それとも別の意味ですか?
Nanne 2013

特定の色の値がテキストを非表示にするかどうかを判断する方法はありますか?
クリストファーマッサー

6
getColor(int)廃止予定です。
RestInPeace 2015年

137

それでもXMLファイルで色を指定する場合は、次のようにします。

<color name="errorColor">#f00</color>

次に、次の2つの方法のいずれかを使用してコードで参照します。

textView.setTextColor(getResources().getColor(R.color.errorColor, getResources().newTheme()));    

または

textView.setTextColor(getResources().getColor(R.color.errorColor, null));

Android Mに対してコンパイルする場合は、おそらく最初の方法が望ましいですが、渡すテーマがnullになる可能性があるため、おそらくそれが簡単でしょうか?

Compatライブラリを使用している場合は、次のようなことができます

textView.setTextColor(ContextCompat.getColor(context, R.color.errorColor));

9
setTextColorの場合、R.color.errorColorの直接参照ではなくgetResources()。getColor()を使用する必要があるのはなぜですか。R.color.xは、他のほとんどすべてのメソッドで機能します。信じられないほどイライラします!
民間人

8
@Civilian:setXXXColor()メソッドが必要とするint paramは、リソースファイルで検索する値ではなく、使用する実際のARGB値として取得されるためです。不思議なことに、ViewクラスにはsetBackgroundColor()とsetBackgroundResource()の両方がありますが、TextViewにはsetTextResource()メソッドがありません。
Ian Kemp

1
getColor(int)廃止予定です。ContextCompat.getColor(getContext(), R.color.yourColor);交換のようです。
RestInPeace 2015年

45

そしてもう一つ:

TextView text = (TextView) findViewById(R.id.text);
text.setTextColor(Color.parseColor("#FFFFFF"));

1
getResources()Contextメンバー関数です。アダプターの場合は、を使用しますgetContext().getResources()。@xbakesxの回答のように、色の値はリソースに入れる必要があります。
C0D3LIC1OU5 2015年

40

これは、XMLファイルからも実行できます。

color.xml値フォルダーにファイルを作成します。

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="textbody">#ffcc33</color>

</resources>

次に、任意のXMLファイルで、次を使用してテキストの色を設定できます。

android:textColor="@color/textbody"

または、Javaファイルでこの色を使用できます。

final TextView tvchange12 = (TextView) findViewById(R.id.textView2);
//Set color for textbody from color.xml file
tvchange1.setTextColor(getResources().getColor(R.color.textbody));

27

使用できます

holder.text.setTextColor(Color.rgb(200,0,0));

透明度で希望の色を指定することもできます。

holder.text.setTextColor(Color.argb(0,200,0,0));

aアルファ(透明)値の場合)r-red g-green b-blue


15

layout.xmlで次のコードを使用します

<TextView  android:id="@+id/textView1"    
android:layout_width="wrap_content"    
android:layout_height="wrap_content" 
android:text="@string/add"
android:layout_marginTop="16dp"
android:textAppearance="?
android:attr/textAppearanceMedium"
android:textColor="#25383C"
android:textSize="13sp" />

<TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/add"
        android:layout_marginTop="16dp"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:textColor="#25383C"
        android:textSize="13sp" />

15

テキストビューの色を設定するには、さまざまな方法があります。

  1. Studio res-> values-> colors.xmlに色の値を追加します。

    <color name="color_purple">#800080</color>

    次に、xmlまたはactvityクラスで色を設定します。

    text.setTextColor(getResources().getColor(R.color.color_purple)
  2. カラーコードを直接指定したい場合は、以下のColor.parseColorコードを使用してください

    textView.setTextColor(Color.parseColor("#ffffff"));   
  3. RGBも使用できます

    text.setTextColor(Color.rgb(200,0,0));
  4. textViewに直接16進コードを使用することもできます。次のように、プレーンなHEXを挿入することもできます。

    text.setTextColor(0xAARRGGBB);
  5. argbをアルファ値とともに使用することもできます。

       text.setTextColor(Color.argb(0,200,0,0));

    アルファ(透明)の場合a。

  6. Compatライブラリを使用している場合は、次のようなことができます

       text.setTextColor(ContextCompat.getColor(context, R.color.color_purple));

9

私は通常、これをすべてのビューに対して行います。

myTextView.setTextColor(0xAARRGGBB);

どこ

  • AAはアルファを定義します(透明の場合は00、不透明の場合はFF)

  • RRGGBBは、通常のHTMLカラーコード(赤のFF0000など)を定義します。


そして、なぜ反対票か。これについて少し考えてみてください。
AW 2013年

7

setTextAppearanceを使用する場合は、テーマから継承されたスタイルでテキストの色が上書きされることを知っておく必要があります。したがって、両方を使用する場合は、後で色を設定します。

これは機能します:

textView.setTextAppearance(context, android.R.style.TextAppearance_Medium);
textView.setTextColor(Color.RED);

これにより、テキストカラーがたとえば白(暗いテーマの場合)または黒(明るいテーマの場合)になります。

textView.setTextColor(Color.RED);
textView.setTextAppearance(context, android.R.style.TextAppearance_Medium);

これとは逆に、XMLでは順序は任意です。


7
textView.setTextColor(ContextCompat.getColor(getApplicationC‌​ontext(),R.color.col‌​orWhite)); 

colors.xml、ファイル、以下のコードで記述します。

<color name="colorWhite">#FFFFFF</color>

6

XMLファイルで)リソースとして色を指定する場合は、そのARGB値(単なるRGB値ではない)を指定する必要があると思います。

色の値をに変更してみてください#FFFF0000。それはあなたに赤を与えるはずです。


私の経験では、それは真実ではなく、ARGB値の代わりにRGB値を使用することが可能です
slinden77

6

text.setTextColor(getResource().getColor(R.color.black)) color.xmlに黒色を作成します。

または

text.setTextColor(Color.parseColor("#000000")) ここに希望の16進コードを入力します

または

text.setTextColor(Color.BLACK) 静的カラーフィールドを使用できます


5

使用する:

TextView tv = new TextView(this);
tv.setTextColor(Color.rgb(285,0,0));


4

アダプターを使用すると、次のコードを使用してテキストの色を設定できます。

holder.text_view = (TextView) convertView.findViewById(R.id.text_view);
holder.text_view.setTextColor(Color.parseColor("#FF00FF"));

4
TextView text = new TextView(context);
text.setTextColor(Color.parseColor("any hex value of a color"));

上記のコードは私の側で働いています。以下textは、色を設定する必要があるTextViewです



2

API 23以降、getResources().getColor()非推奨です。

代わりにこれを使用してください:

textView.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.color_black));


1

アダプターでは、次のコードを使用してテキストの色を設定できます。

holder.my_text_view = (TextView) convertView.findViewById(R.id.my_text_view);
holder.my_text_view.setTextColor(Color.parseColor("#FFFFFF"));

1

カラーコードを直接指定する場合は、

textView.setTextColor(Color.parseColor("#ffffff"));

または、colorsフォルダーからカラーコードを指定する場合は、

textView.setTextColor(R.color.white);

このコードtextView.setTextColor(R.color.white); 動作しません。color.xmlから色を取得するには、text.setTextColor(getResources()。getColor(R.color.color_purple)を使用できます)
Gian Gomen

1

TextViewの色を設定するにTextView.setTextColor(R.color.YOURCOLOR)は、十分ではありません!

このように使用する必要があります–

TextView myText = (TextView) findViewById(R.id.YoutTextViewID);

myText.setTextColor(getResources().getColor(R.color.YOURCOLOR);

または

myText.setTextColor(Color.parseColor("#54D66A"));


0

同様に、私は使用していたcolor.xml

<color name="white">#ffffff</color>
    <color name="black">#000000</color>   

次のTextViewような背景を設定する場合:

textView.setTextColor(R.color.white);

別の色を取得していましたが、以下のコードを使用すると、実際の色を取得しました。

textView.setTextColor(Color.parseColor("#ff6363"));

0

私はこのようにしました:res / valuesフォルダーにColorsというXMLファイルを作成します。

私のColors.xml:

    <?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="vermelho_debito">#cc0000</color>
    <color name="azul_credito">#4c4cff</color>
    <color name="preto_bloqueado">#000000</color>
    <color name="verde_claro_fundo_lista">#CFDBC5</color>
    <color name="branco">#ffffff</color>
    <color name="amarelo_corrige">#cccc00</color>
    <color name="verde_confirma">#66b266</color>
</resources>

この色をxmlファイルから取得するために、私は次のコードを使用しました:valorはTextView、ctxはContextオブジェクトです。私はそれをアクティビティからではなく、BaseAdapterからListViewに使用しています。これが、このコンテキストオブジェクトを使用した理由です。

valor.setTextColor(ctx.getResources().getColor(R.color.azul_credito));

それが役に立てば幸い。


0

RGB値を提供する場合:text.setTextColor(Color.rgb(200,0,0));
16進値から色を解析する場合: text.setTextColor(Color.parseColor("#FFFFFF"));


0

アダプタを使用していても、リソースで定義されている色を使用したい場合は、次の方法を試すことができます。

holder.text.setTextColor(holder.text.getContext().getResources().getColor(R.color.myRed));

0
TextView textresult = (TextView)findViewById(R.id.textView1);
textresult.setTextColor(Color.GREEN);

0

getColor()は非推奨です

だからこの方法を試してください:

 tv_title.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.sf_white));

0

RecyclerViewのViewHolderのTextViewでこれを行っていました。理由はよくわかりませんが、ViewHolderの初期化ではうまくいきませんでした。

public ViewHolder(View itemView) {
    super(itemView);
    textView = (TextView) itemView.findViewById(R.id.text_view);
    textView.setTextColor(context.getResources().getColor(R.color.myColor));
    // Other stuff
}

しかし、それをonBindViewHolderに移動すると、問題なく動作しました。

public void onBindViewHolder(ViewHolder holder, int position){
    // Other stuff
    holder.textView.setTextColor(context.getResources().getColor(R.color.myColor));
}

これが誰かを助けることを願っています。

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