直接这样设置会发现没效果
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提示颜色
© 版权声明
文章版权归作者所有,未经允许请勿转载。
相关文章
暂无评论...