textviewのテキストのデフォルトの色は何ですか?


回答:


88

古い色を保存して、それを使用して元の値に戻すことができます。次に例を示します。

ColorStateList oldColors =  textView.getTextColors(); //save original colors
textView.setTextColor(Color.RED);
....
textView.setTextColor(oldColors);//restore original colors

ただし、通常、デフォルトのTextViewテキストの色は、に適用されてActivityいる現在のテーマから決定されます。


最も正しい解決策。テキストの色の状態を保持する(無効など)
dasar 2017年

私の観察では、テーマによって定義されたテキストの色は、コードから動的に追加されたTextViewによって継承されません。ダーク/ライトのテーマに関係なく、常に白で表示されます。
shiouming 2017

2
@shiouming使用するコンテキストによって異なります。すべてのコンストラクターはコンテキストを使用し、そのコンテキストでは、テーマが設定されます(通常はデフォルト)。必要に応じて、使用のTextView(コンテキストコンテキストを、属性セットattrsに、int型defStyleAttr、int型defStyleRes)
Bonatti

110

実際の色TextViewは次のとおりです。

android:textColor="@android:color/tab_indicator_text"

または

#808080

4
これは、デフォルトのタブインジケータのテキストの色です。多くの場合、デフォルトのテキストの色と同じである可能性がありますが、私はそれに依存しません。
k2col 2015年

6
非常に近いですが、この色は同じではありません。
LukaszTaraszka 2017

2
@LukTarは正しいです、私はフォトショップを使用して色をチェックしました...#737373は、Android Studioで1000%にズームされたビューのポイントピクセルサンプル(サンプル領域サイズ1ピクセル)からのテキストビューテキストの色です...私は思いますただし、特定のアプリの実際の値を取得するには、アプリのデフォルトのスタイルを確認する必要があります...
me_ 2018

41

で定義されているいくつかのデフォルトの色があります android.R.color

int c = getResources().getColor(android.R.color.primary_text_dark);

4
int c = ...代わりにすべきですColor c = ...
Kevin Cruijssen 2014年

7
APIレベル23の時点で、getResources().getColor(int id)非推奨になりました(リンクを参照)。getResources().getColor (int id, Resources.Theme theme)またはContextCompat.getColor(contex, android.R.color.primary_text_dark)
InfectedPacket 2015

primary_text_darkは非推奨になりましたが、理由はわかりません:(
Impulse The Fox

15

属性から次の値を取得します。

int[] attrs = new int[] { android.R.attr.textColorSecondary };
TypedArray a = getTheme().obtainStyledAttributes(R.style.AppTheme, attrs);
DEFAULT_TEXT_COLOR = a.getColor(0, Color.RED);
a.recycle();

これは、テーマに基づいて色を適切に選択し、たとえばアプリがナイトモードの場合に更新されるようです。
ブリルパピン2015

現在のテーマのTypedArrayを取得するには、テーマ引数なしで呼び出します。TypedArraya = getTheme()。obtainStyledAttributes(attrs);
petrsyn 2016年

これは、テーマが実際にtextColorSecondaryを使用している場合にのみ、適切な色を取得します。テーマまたはスタイルでこれをオーバーライドすることが可能であるため、これは特定のビューのデフォルトのテキストの色が実際に何であるかを決定するための非常に正確な方法ではありません。また、個々のビューにテーマを設定できるようになったため、アクティビティのテーマがすべてのビューで有効であると想定するのではなく、ビューのコンテキストに関連付けられたテーマを使用する必要があることにも注意してください。
ローンラリベルテ2016年

6

テキストの色を指定しない場合、Androidが使用するテーマにはデフォルトがあります。さまざまなAndroidUI(HTC Sense、Samsung TouchWizなど)では色が異なる場合があります。Androidには_dark_lightテーマがあるため、これらのデフォルトは異なります(ただし、バニラAndroidでは両方ともほぼ黒です)。ただし、デバイス全体で一貫したスタイルを提供するために、プライマリテキストの色を自分で定義することをお勧めします。

コード内:

getResources().getColor(android.R.color.primary_text_dark);
getResources().getColor(android.R.color.primary_text_light);

xmlの場合:

android:color="@android:color/primary_text_dark"
android:color="@android:color/primary_text_light"

バニラAndroidでの参照として、ダークテーマのテキストの色はで#060001あり、ライトテーマでは#060003APIv1以降です。ここでAndroidスタイルのクラスを参照してください


最後のリンクで参照されている色は、実際にはまったく色ではなく、色を検索するために使用されるandroid.R値にすぎません。このディレクトリで色を見つけ、この.xmlファイルで基本色の参照を検索することで、デフォルトの色を検索できます
AlexGittemeier19年

5

私はそれが古いことを知っていますが、デフォルトのライトテーマ、デフォルトの私自身のテーマエディタによると

textPrimaryColor = #000000

そして

textColorPrimaryDark = #757575


2

すべての状況で可能であるとは限りませんが、同じアクティビティに存在し、探している色を持っている別のランダムなTextViewの値を単純に使用してみませんか?

txtOk.setTextColor(txtSomeOtherText.getCurrentTextColor());

0

デフォルトの色はありません。これは、すべてのデバイスが独自のものを持つことができることを意味します。


7
デフォルトの色はありません。すべてのAndroidディストリビューションがそれらを上書きできるというだけです
Patrick Favre 2015

@ for3st彼らがそれを変えるケースを知っていますか?
Androidの開発者

0

デフォルトの色整数値は16711935(0x00FF00FF)だと思います。


12
ハードコードされたものがすごいね。これは、すべてのデバイスおよびすべての選択可能なテーマのすべてのAndroidバージョンの値でしたか?!冗談、あなたが知っている... :)
ボンダックス2012年

1
それで、Androidのデフォルトのテキストの色はピンクですか?#060001developer.android.com / reference / android /…とより一致
Patrick Favre

0

ねえ、あなたはこれを試すことができます

ColorStateList colorStateList = textView.getTextColors();
String hexColor = String.format("#%06X", (0xFFFFFF & colorStateList.getDefaultColor()));

0

android:textColor="@android:color/secondary_text_dark"よりもデフォルトのTextViewカラーに近い結果が得られることがわかりましたandroid:textColor="@android:color/tab_indicator_text"。使用しているテーマに応じて、secondary_text_dark / lightを切り替える必要があると思います


0

TextView.setTag / getTagを使用して、変更を加える前に元の色を保存できます。ある場合は、他のタグを区別するために、ids.xmlに一意のIDリソースを作成することをお勧めします。

他の色に設定する前に:

if (textView.getTag(R.id.txt_default_color) == null) {
    textView.setTag(R.id.txt_default_color, textView.currentTextColor)
}

元に戻す:

textView.getTag(R.id.txt_default_color) as? Int then {
    textView.setTextColor(this)
}
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.