我将颜色设置为红色,然后我想将颜色再次设置为默认颜色,但是我不知道什么是默认颜色,有人知道吗?
Answers:
您可以保存旧颜色,然后使用它恢复原始值。这是一个例子:
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使用的主题有默认值。在各种Android用户界面(例如HTC Sense,三星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"
自API v1起,深色主题文本颜色为#060001
浅色主题,浅色主题中为浅色主题,作为香草Android中的参考#060003
。在这里查看android样式类
我知道它很旧,但是根据我自己的主题编辑器,默认光源主题为默认
textPrimaryColor = #000000
和
textColorPrimaryDark = #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)
}