android代码设置某个TextInputLayout禁用hintcolor颜色

直接这样设置会发现没效果
textInputLayout.setHintTextColor(colorStateList);
因此用setDefaultHintTextColor

    public static void setTextInputLayoutHintColor(TextInputLayout textInputLayout, ColorStateList colorStateList) {
        textInputLayout.setDefaultHintTextColor(colorStateList);
        textInputLayout.setHintTextColor(colorStateList);
    }

生成ColorStateList

 public static ColorStateList getColorStateList(int pressColor, int focusedColor, int disableColor, int normalColor) {

        // 定义状态集和对应的颜色值
        int[][] states = new int[][]{
                // 按下状态
                new int[]{android.R.attr.state_pressed},
                // 获取焦点状态
                new int[]{android.R.attr.state_focused},
                // 禁用状态
                new int[]{-android.R.attr.state_enabled},
                // 默认状态(未按下、未获取焦点且未禁用)
                new int[]{}
        };

        int[] colors = new int[]{
                // 对应按下状态的颜色
                pressColor,
                // 对应获取焦点状态的颜色
                focusedColor,
                // 对应禁用状态的颜色
                disableColor,
                // 对应默认状态的颜色
                normalColor
        };

        ColorStateList colorStateList = new ColorStateList(states, colors);
        return colorStateList;
    }

或者

ColorStateList.valueOf(ContextCompat.getColor(context,R.color.your_color_name))

参考文章
关于android:以编程方式更改TextInputLayout提示颜色

© 版权声明

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...