setBackgroundDrawable与另一个视图的背景可绘制选择器打破了选择器状态

时间:2012-08-20 16:14:14

标签: android

如果我在一个带有选择器drawable的按钮上从Button.getBackground()设置一个Drawable对象,然后在具有相同drawable的另一个按钮上调用set setBackgroundDrawable,则选择器状态不起作用。

示例:

//layout is inflated from XML

//buttonA object ref set from view
//buttonB object ref set from view

drawableA = buttonA.getBackground();
drawableB = buttonB.getBackground();

现在调用buttonA.setBackgroundDrawable(drawableB)会导致buttonA在不同的选择器状态下无法正确设置动画。

我做错了吗?我尝试调用getConstantState()。newDrawable(getResources())。mutate()来制作类似drawable的副本,以防状态绑定到原始按钮但似乎没有帮助。

1 个答案:

答案 0 :(得分:0)

我知道这个问题已经过时了,但我只是遇到了同样的问题 - 所以如果有其他人找到了通往互联网这个黑暗角落的路,那么这就是我的解决方案......

buttonB.setBackground(buttonA.getBackground().getConstantState().newDrawable());

两个视图的状态现在都应该有效。希望这有帮助!