1. ホーム
  2. android

TextView setTextColor()が動作しない

2023-07-23 08:57:33

質問

このような要素のリスト(ListViewではなく、単に親に追加するだけ)をプログラム的に作成します。

    <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" 
    android:orientation="vertical" android:layout_weight="1">
    <TextView android:id="@+id/filiale_name"
    android:layout_width="fill_parent" android:layout_height="wrap_content"/>
    <TextView android:id="@+id/lagerstand_text"
    android:layout_width="fill_parent" android:layout_height="wrap_content"
    android:textSize="10sp" android:textColor="@color/red"/>
</LinearLayout>

また、values/colors.xmlにいくつかの色を定義しています。ご覧のように、id "lagerstand_text" を持つTextViewは、デフォルトで赤に設定されています。これでうまくいきました。

Javaで要素を作成するとき、私は次のようにします。

lagerstandText.setText("bla");

で、いくつかの要素については

lagerstandText.setTextColor(R.color.red);

といった色になります。setTextColor()を呼んでいない要素は赤ですが、それ以外はどの色を選んでも(また同じ赤でも)グレーになります。

なぜでしょうか?

どのように解決するのですか?

ドキュメントにはあまり詳しく書かれていませんが、R.colorの整数値だけを用いて setTextColor . を呼び出す必要があります。 getResources().getColor(R.color.YOURCOLOR) を呼び出して適切に色を設定する必要があります。

プログラム的にテキストの色を設定するには、以下を使用します。

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

サポートライブラリ23からは、getColorが非推奨になったため、以下のコードを使用する必要があります。

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