Android在代码里动态设置文字颜色Selector中getColor与getColorStateList方法的区别(坑)

当我们需要动态的在代码里给文字设置颜色,而这个文字具有点击态的时候,我们经常会遇到怎么设置都不好使的情况,接下来从踩坑、填坑,到最后分析原因整个流程详细介绍一下这种case。

下面是我们在/res/color文件夹里给元素设置的文字颜色seletor:***_view_btn_text_color_selector.xml



    
    

1.踩坑

在代码里设置元素的颜色seletor,以为在代码里直接调用 .setTextColor(int colorValue)就可以了,结果运行效果是只能读取到没获取焦点时的色值,而其他状态获取不到。

//设置元素文字颜色
empty_btn?.setTextColor(resources.getColor(R.color.***_view_btn_text_color_selector))

2.填坑

采用一下方法为元素设置文字颜色:

empty_btn?.setTextColor(resources.getColorStateList(R.color.***_view_btn_text_color_selector))

区别在于:改之前用的是getColor()方法,改之后用的是getColorStateList()方法。

3.原因分析

文字颜色的seletor在代码里的显示形式是ColorStateList,而res/color放的就是ColorStateList资源XML文件,getColor()只能读取单个的color。

你可能感兴趣的:(Android学习)