使用另一个视图的背景可绘制选择器设置setBackgroundDrawable会破坏选择器状态。

3
如果我从Button.getBackground()获取一个Drawable对象,并将其设置为带有选择器drawable的按钮上,然后再调用set setBackgroundDrawable在另一个具有相同drawable的按钮上,那么选择器状态就无法正常工作。
例如:
//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()来创建一个类似于原始按钮绑定状态的可变副本,但这似乎没有帮助。

1个回答

0

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

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

现在两个视图的状态都应该可以正常工作了。希望这能有所帮助!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接