1

私はリソースに定義された色に依存するアプリを書いています。レイアウトXMLファイルに直接設定されるものと、コードで設定されるものがあります。例:res/values/styles.xmlアンドロイド:textColorがMarshmallowで動作しなくなった

色の定義:

<color name="orvGyro">#33B5E5</color> 

レイアウト:コード内

<TextView 
    android:id="@+id/textView3" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="@string/dotSpace" 
    android:textAppearance="?android:attr/textAppearanceSmall" 
    android:textColor="@color/orvGyro" /> 

カラー:

accStatus.setTextColor(getResources().getColor(R.color.somecolor)); 

これは持っているロリポップ、までアプリのターゲットのAPI 17適切な色を表示して完璧に作業しました。 Marshmallow(Cyanogenmod 13)に移行した後、これらの色はすべてオレンジ色で表示されます。 Javaコードで定義され、リソースでは定義されていない他の色は、正しく表示されているようです。

ターゲットAPIを23に変更し、API 21+のスタイルを追加してみましたが、役に立たなかったことがあります。

ここで何が間違っていますか?これはCyanogenMod13のバグですか?何か間違っていますか?

編集:それはリソースから色を得ることではないようです。

<TextView 
    android:id="@+id/textView9" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="@string/dotSpace" 
    android:textAppearance="?android:attr/textAppearanceSmall" 
    android:textColor="#669900" /> 

EDIT 2:ちょうどAndroid M Developer Preview - TextView android:textColor being ignored出くわしも以下のように色をハードコーディングすることは私にオレンジ色のテキストを提供します。これは私が経験している行動を説明できますか?

編集3:レイアウトを使用する代わりにコンテンツを動的に生成すると、色が正しく表示されます。例:

TextView newType = new TextView(rilLteCells.getContext()); 
    newType.setLayoutParams(new TableRow.LayoutParams(0, LayoutParams.WRAP_CONTENT, 2)); 
    newType.setTextAppearance(rilLteCells.getContext(), android.R.style.TextAppearance_Medium); 
    newType.setTextColor(rilLteCells.getContext().getResources().getColor(getColorFromGeneration(cell.getGeneration()))); 
    newType.setText(rilLteCells.getContext().getResources().getString(R.string.smallDot)); 
    row.addView(newType); 

答えて

1

がそれを手に入れた返し。

この問題が発生した場合でも、コントロールに表示されるテキストは1つの正方形(U + 2b1b)でした。このテキストを変更すると(Xを付けるなどして)、正方形だけがオレンジ色で表示され、残りの文字列は目的の色になります。

固定小物(U + 25fc)に変更します。他のいくつかの特殊文字は私に他の色を与えるでしょう - 以前のバージョンでは、他のテキストのようにスタイルを設定できたときに、特定の文字がMarshmallowの特定の色に固定されているようです。

1

使用ContextCompatクラスは、それは後方互換性の方法でAPIレベル4の後に導入されたコンテキストの機能にアクセスするためのヘルパークラスです。

accStatus.setTextColor(ContextCompat.getColor(context, R.color.somecolor)); 

public static final int getColor (Context context, int id)

       特定のリソースIDに関連付けられた色

+1

レイアウトで直接設定した色についてはどうすればよいですか? – user149408

+0

あなたのカラーリソースから適切な色を取ります。 –

+1

それはまったく動作しないものです。レイアウトでカラーリソースを指定しても、オレンジ色で表示されます。 – user149408

0

私のSony Xperia(Android 6.0 Marshmallow)と同じ問題が発生しました。その理由は、設定/ユーザー補助/ハイコントラストのテキスト(実験的)が有効になっているためです。

私はそれを無効にしたとき、期待どおりに再び正常に機能しました。

関連する問題