Android 为启用和禁用状态动态创建选择器drawable
我想为按钮动态创建选择器。当按钮被禁用时,其颜色应改变Android 为启用和禁用状态动态创建选择器drawable,android,statelistdrawable,Android,Statelistdrawable,我想为按钮动态创建选择器。当按钮被禁用时,其颜色应改变 btn.setEnable(false); btn.setBackgroundColor(color); 请不要使用选择器。答案如下 但是,如果您只是想根据不同的状态更改颜色,那么就不要编写一堆与选择器相关的xml 关键点是动态构建StateListDrawable 我已经厌倦了编写xml,所以我创建了一个和一个 请看一看,很抱歉没有显示任何代码。发现我的代码中有愚蠢的错误 方法来创建选择器 public static StateLis
btn.setEnable(false);
btn.setBackgroundColor(color);
请不要使用选择器。答案如下
但是,如果您只是想根据不同的状态更改颜色,那么就不要编写一堆与选择器相关的xml
关键点是动态构建StateListDrawable
我已经厌倦了编写xml,所以我创建了一个和一个
请看一看,很抱歉没有显示任何代码。发现我的代码中有愚蠢的错误 方法来创建选择器
public static StateListDrawable createSelectorsWithStates(int[] state,
Drawable[] drawables)
{
StateListDrawable stateDrawable = new StateListDrawable();
for (int i = 0; i < state.length; i++)
{
stateDrawable.addState(new int[] { state[i] }, drawables[i]);
}
return stateDrawable;
}
阅读StateListDrawable我已经阅读了,但它在状态下不起作用。它起作用了,许多选择器使用该状态。这是我的错,我犯了一个非常愚蠢的错误。
Drawable enable = ResourceManager.createRectangleShape(
bgColor, null, borderRadius);
enable.setAlpha((int)0.5f);
Drawable disable = ResourceManager.createRectangleShape(
bgColor, null, borderRadius);
disable.setAlpha(150);
ResourceManager.setDrawable(v1, ResourceManager
.createSelectorsWithStates(new int[] {
android.R.attr.state_enabled,
-android.R.attr.state_enabled },
new Drawable[] { enable, disable }));