我将颜色设置为 red ,然后我想再次将颜色设置回默认值,但我不知道默认颜色是什么,有人知道吗?
14 回答
实际上颜色 TextView 是:
android:textColor="@android:color/tab_indicator_text"
或者
#808080
您可以保存旧颜色,然后使用它来恢复原始值。这是一个例子:
ColorStateList oldColors = textView.getTextColors(); //save original colors
textView.setTextColor(Color.RED);
....
textView.setTextColor(oldColors);//restore original colors
但通常默认TextView
文本颜色由应用于您的Activity
.
定义了一些默认颜色android.R.color
int c = getResources().getColor(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();
我知道它很旧,但根据我自己的带有默认浅色主题的主题编辑器,默认
textPrimaryColor = #000000
和
textColorPrimaryDark = #757575
如果您不指定文本颜色,Android 使用的主题中有默认值。它在各种 Android UI(例如 HTC Sense、Samsung TouchWiz 等)中可能有不同的颜色。Android 有一个_dark
和_light
主题,所以它们的默认值是不同的(但在 vanilla 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 中的参考,深色主题文本颜色是自 API v1 以来#060001
的浅色主题。在此处查看 android 样式类#060003
我在 textview 上使用了颜色选择器并得到了这个 #757575
在所有情况下可能都不可能,但为什么不简单地使用存在于同一个 Activity 中并带有您正在寻找的颜色的不同随机 TextView 的值呢?
txtOk.setTextColor(txtSomeOtherText.getCurrentTextColor());
没有默认颜色。这意味着每个设备都可以拥有自己的。
我相信默认颜色整数值为 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)
}
在应用程序的主题中定义了一些默认颜色。下面是可用于以编程方式获取当前默认颜色的代码片段。
protected int getDefaultTextColor(){
TextView textView = new TextView(getContext());
return textView.getCurrentTextColor();
}