Android 更改以编程方式指定给着色的选择器

Android 更改以编程方式指定给着色的选择器,android,android-drawable,Android,Android Drawable,我已经将可绘制设置为ImageButton的色调,这样当按钮被启用或禁用时,图标的颜色会自动更改,之后有没有办法通过编程方式更改色调,以便在启用和禁用状态下使用不同的颜色保持相同的行为 my_layout.xml的内容: button_tint_color.xml的内容: 然后在我的代码中,我可以只执行buttonMinus.setEnabledtrue或buttonMinus.setEnabledfalse,图标颜色会自动改变。有没有一种方法可以通过编程方式为启用的颜色或禁用的颜色中的一种或两

我已经将可绘制设置为ImageButton的色调,这样当按钮被启用或禁用时,图标的颜色会自动更改,之后有没有办法通过编程方式更改色调,以便在启用和禁用状态下使用不同的颜色保持相同的行为

my_layout.xml的内容:

button_tint_color.xml的内容:


然后在我的代码中,我可以只执行buttonMinus.setEnabledtrue或buttonMinus.setEnabledfalse,图标颜色会自动改变。有没有一种方法可以通过编程方式为启用的颜色或禁用的颜色中的一种或两种设置不同的颜色?

您可以使用类似的方法,我认为:

if(buttonMinus.isEnabled()){
//With button enabled
yourIcon.setItemIconTintList(ColorStateList.ValueOf(yourColor));
}else{...}

到目前为止,我发现最好的方法是以编程方式创建一个新的颜色状态列表,并将其分配给按钮yikes,目标是避免以编程方式设置颜色之类的视觉属性

ColorStateList按钮状态=新建ColorStateList 新int[][]{ {-android.R.attr.state_enabled}, {} }, 新int[]{ 颜色,红色, 蓝色 } ; buttonMinus.setImageTintListbuttonStates;
您需要创建或从按钮获取并编辑StateListDrawable Programmatically是否无法更改指定的drawable,或为图标\u tint\u disable\u color和图标\u tint\u enable\u color常量应用具有不同值的不同主题?否,目标是避免以编程方式设置按钮视觉属性,以避免代码中的噪音和错误。