应用 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);
    }
}

我在这里看到以下需要更正的内容:

  1. 不要在这里设置背景。它可能会开始无限循环重绘。

  2. 从 class 外部调用 setBackgroundTintList,或者至少在 class 的构造函数中调用(最好是有 2 个参数的构造函数)。

对于您的情况,您不需要重写方法 onDraw(canvas),或者至少如果您仍然想要,请遵循以下规则:

– 如果您希望 class 照常绘制它,请调用 super.onDraw(canvas)

– 不要在此方法中分配内存,您可以通过创建此 int 数组来分配内存。