应用 ColorStateList 后 EditText 文本颜色始终为白色
EditText text color is always white after applying ColorStateList
我有这个问题:
我有一个带有主题的自定义 EditText,就像对其他组件所做的那样,我创建了一个扩展此 EditText 的 class,并且在 onDraw 方法中我应用了一个 ColorStateList,我可以正确应用我设置的颜色,但是文本变成白色,我会改为将其设置在 ColorStateList 中,我该怎么做,我附加了 onDraw () 方法的覆盖,如前所述,它适用于其他组件。
@Override
protected void onDraw(Canvas canvas) {
if (!AppApplication.IS_DEFAULT) {
ColorStateList thumbStates = new ColorStateList(
new int[][]{
new int[] { android.R.attr.state_enabled},
new int[] {-android.R.attr.state_enabled},
new int[] {-android.R.attr.state_checked},
new int[] { android.R.attr.state_pressed}
},
new int[]{
Color.BLACK,
Color.RED,
Color.GREEN,
Color.BLUE
}
);
this.setBackgroundTintList(thumbStates);
}
}
我在这里看到以下需要更正的内容:
不要在这里设置背景。它可能会开始无限循环重绘。
从 class 外部调用 setBackgroundTintList
,或者至少在 class 的构造函数中调用(最好是有 2 个参数的构造函数)。
对于您的情况,您不需要重写方法 onDraw(canvas)
,或者至少如果您仍然想要,请遵循以下规则:
– 如果您希望 class 照常绘制它,请调用 super.onDraw(canvas)
。
– 不要在此方法中分配内存,您可以通过创建此 int 数组来分配内存。
我有这个问题: 我有一个带有主题的自定义 EditText,就像对其他组件所做的那样,我创建了一个扩展此 EditText 的 class,并且在 onDraw 方法中我应用了一个 ColorStateList,我可以正确应用我设置的颜色,但是文本变成白色,我会改为将其设置在 ColorStateList 中,我该怎么做,我附加了 onDraw () 方法的覆盖,如前所述,它适用于其他组件。
@Override
protected void onDraw(Canvas canvas) {
if (!AppApplication.IS_DEFAULT) {
ColorStateList thumbStates = new ColorStateList(
new int[][]{
new int[] { android.R.attr.state_enabled},
new int[] {-android.R.attr.state_enabled},
new int[] {-android.R.attr.state_checked},
new int[] { android.R.attr.state_pressed}
},
new int[]{
Color.BLACK,
Color.RED,
Color.GREEN,
Color.BLUE
}
);
this.setBackgroundTintList(thumbStates);
}
}
我在这里看到以下需要更正的内容:
不要在这里设置背景。它可能会开始无限循环重绘。
从 class 外部调用
setBackgroundTintList
,或者至少在 class 的构造函数中调用(最好是有 2 个参数的构造函数)。
对于您的情况,您不需要重写方法 onDraw(canvas)
,或者至少如果您仍然想要,请遵循以下规则:
– 如果您希望 class 照常绘制它,请调用 super.onDraw(canvas)
。
– 不要在此方法中分配内存,您可以通过创建此 int 数组来分配内存。