Pau*_*ega 8 android android-layout android-theme
我有一个Activity包含EditText3.1的.根据用户输入,我更改EditText中的文本颜色(红色表示错误),然后在文本正常时将其重置为黑色.
一个问题涉及改变活动的整体主题.例如,将其更改为浅色主题的常规黑暗主题会导致黑色文本显示在黑色背景下 - 因此我需要进入并更改代码,而不是在数据正常时将文本重置为白色.
如果我将主题更改为Activity,而不是必须更改此代码,我想知道是否有办法以编程方式为给定主题提取默认的EditText文本颜色,然后我可以将文本切换回默认颜色而不是在白色,黑色等硬编码
Die*_*rik 11
根据主题的文档直接使用颜色obtainStyledAttributes.
TypedArray themeArray = context.getTheme().obtainStyledAttributes(new int[] {android.R.attr.editTextColor});
try {
int index = 0;
int defaultColourValue = 0;
int editTextColour = themeArray.getColor(index, defaultColourValue);
}
finally
{
// Calling recycle() is important. Especially if you use alot of TypedArrays
// http://stackoverflow.com/a/13805641/8524
themeArray.recycle();
}
Run Code Online (Sandbox Code Playgroud)
如果在更改颜色之前检索它们,EditText.getCurrentTextColor()和EditText.getTextColors()也将提供默认颜色。此外,这种方法可以在 3.0 之前使用,这在使用 android.R.attr.editTextColor 时是不可能的。
| 归档时间: |
|
| 查看次数: |
9493 次 |
| 最近记录: |