色を赤に設定した後、再びデフォルトに戻したいのですが、デフォルトの色がわからないのですが、誰か知っていますか?
回答:
古い色を保存して、それを使用して元の値に戻すことができます。次に例を示します。
ColorStateList oldColors = textView.getTextColors(); //save original colors
textView.setTextColor(Color.RED);
....
textView.setTextColor(oldColors);//restore original colors
ただし、通常、デフォルトのTextView
テキストの色は、に適用されてActivity
いる現在のテーマから決定されます。
実際の色TextViewは次のとおりです。
android:textColor="@android:color/tab_indicator_text"
または
#808080
で定義されているいくつかのデフォルトの色があります android.R.color
int c = getResources().getColor(android.R.color.primary_text_dark);
int c = ...
代わりにすべきですColor c = ...
getResources().getColor(int id)
非推奨になりました(リンクを参照)。getResources().getColor (int id, Resources.Theme theme)
またはContextCompat.getColor(contex, android.R.color.primary_text_dark)
属性から次の値を取得します。
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();
テキストの色を指定しない場合、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
あり、ライトテーマでは#060003
APIv1以降です。ここでAndroidスタイルのクラスを参照してください
私はそれが古いことを知っていますが、デフォルトのライトテーマ、デフォルトの私自身のテーマエディタによると
textPrimaryColor = #000000
そして
textColorPrimaryDark = #757575
テキストビューでカラーピッカーを使用して、これを入手しました#757575
デフォルトの色はありません。これは、すべてのデバイスが独自のものを持つことができることを意味します。
デフォルトの色整数値は16711935(0x00FF00FF)だと思います。
ねえ、あなたはこれを試すことができます
ColorStateList colorStateList = textView.getTextColors();
String hexColor = String.format("#%06X", (0xFFFFFF & colorStateList.getDefaultColor()));
android:textColor="@android:color/secondary_text_dark"
よりもデフォルトのTextViewカラーに近い結果が得られることがわかりましたandroid:textColor="@android:color/tab_indicator_text"
。使用しているテーマに応じて、secondary_text_dark / lightを切り替える必要があると思います
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)
}