3

如果我从 Button.getBackground() 在具有选择器可绘制对象的按钮上设置可绘制对象,然后在具有相同可绘制对象的另一个按钮上调用 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() 来制作类似于可绘制对象的副本,以防状态绑定到原始按钮,但这似乎没有帮助。

4

1 回答 1

0

我知道这个问题很老,但我刚刚遇到了同样的问题 - 所以如果其他人找到了通往互联网这个黑暗角落的路,这就是我的解决方案......

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

两个视图的状态现在应该可以工作了。希望这可以帮助!

于 2014-05-06T18:19:28.433 回答