view . setselected (bool)在不同位置以编程方式更新视图时不起作用



我遇到了一个问题,我在应用程序中的视图没有在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"表明没有

最新更新