我遇到了一个问题,我在应用程序中的视图没有在viewObject.setSelected(true)上更新。View对象包含TextView或ImageView。
myViewObject.setSelected(isSelected);
当我添加一个新功能时,视图的颜色是在特定条件/事件下使用下面的编程方式更改的。
TextView myTextView = myViewObject.findViewById(R.id.custom_text_view);
ImageView myImageView = myViewObject.findViewById(R.id.custom_image_view);
myTextView.setTextColor(ContextCompat.getColor(mContext, newColor));
myImageView.setColorFilter(ContextCompat.getColor(mContext, newColor));
我想做的是保持原有的功能,当setSelected(bool)如上所述被调用时,视图对象的颜色得到更新,并添加一个新的功能,其中视图的颜色根据使用setColorFilter的事件而改变。
我观察到的是ViewObject.setSelected()按预期工作,直到我添加代码以编程方式使用setColorFilter(color)更新颜色。在为setColorFilter(color)添加代码后,它按预期工作,但setSelected(bool)停止工作。
提前感谢您的时间和建议
这是我的理解。当使用setColorFilter时,它为图像设置颜色并删除图像的任何预设色调。
myImageView.setColorFilter(ContextCompat.getColor(mContext, newColor))
所以即使setSelected(bool)被调用,什么也没发生
myViewObject.setSelected(isSelected);
正确的方法是使用ColorStateList使用setTint或setTintList
下面是一个创建ColorStateList的例子,然后你可以将它设置为ImageView,如下所示
myImageView.setImageTintList(myColorStateList);
注意:在ColorStateList中,负值表示该属性的反面。例如">android.R.attr.state_enabled;-android. r. attrs .state_enabled"表明没有