2011-07-19 4 views
44

与えられたコードでは、lbl [0] .getTextColor()はエラーを出していますが、私はどのようにテキストファイルの色を取得するのかわかりません。テキストビューのテキストの色を取得するには?

public void angry(View v) 
{ 
    if (lbl[0].getTextColor() == Color.BLACK) 
     lbl[0].setTextColor(Color.RED); 
    if (lbl[0].getTextColor() == Color.RED) 
     lbl[0].setTextColor(Color.BLACK); 
} 

ありがとうございます。

答えて

119

使用この

textView.getCurrentTextColor()

+0

okありがとうございましたJeffG –

7

1覚えておくべき重要なことがあります:getCurrentTextColor()と同様にgetCurrentHintTextColor()とgetHighlightColor()主に色を定義するために使用される六角ない戻りint型の値のような同様の方法で。これは負の数であるため、さらに混乱する可能性があります。たとえば、赤は-65536、緑は-16711936、白は-1です。

getCurrentTextColor()は現在の色と白色の値の差(小数点以下ともに)から1を差し引いた値を返します。式は:CurrentColor-(WhiteColor + 1)です。白は16777215です。 もちろん、標準カラーでは、Color.GREENやColor.MAGENTAなどの定義済みの定数を使用できますが、どのカラーでも効果的にgetCurrentTextColor()を使用できることがわかっています。

あなたが設定すると、あなたは、Androidの新バージョンの色を設定するcontextcompatライブラリを使用している場合http://android4beginners.com/2013/07/lesson-1-3-how-to-change-a-color-of-text-and-background-in-textview/

+9

不必要な混乱。 'getCurrentTextColor()'は整数であるカラー値を返します。これは32バイトに格納されます。 8バイトの4つのグループこれは文字列に変換するまでは16進数でもdecでもないため、白の値で計算する必要はありません。 – Tomasz

0

でのAndroidの色を得ることについても、詳細を読むことができ、あなたは上記した後、どのような見た目に異なる値を得ることができます。このテストは、私がテストカラーを設定するために以下を使用していた場所で働いた。

view.setTextColor(ContextCompat.getColor(ctx、color));

textColor =view.getCurrentTextColor(); 
    CoreApp.debug("viewutils", "green color: "+textColor); 
    assertThat(textColor, is(ContextCompat.getColor(mCtx, R.color.green))); 
関連する問題