Android如何通过编程方式更改图片按钮?

3

你好,我有一个名为linearButtonimagebutton,在XML中设置了背景样式。我想要在代码中有条件地替换背景,但是它从未生效!

Drawable replacer = getResources().getDrawable(R.drawable.replacementGraphic);
linearButton.setBackgroundDrawable(replacer);

这似乎不太有效,我需要在图像按钮在视觉上改变之前调用“重新加载”函数吗?

2
你所做的应该是有效的。请展示更多的代码,以便我们能够帮助你。 - Gallal
嘿,谢谢,它正在工作,我本来想删除这个问题,但是添加的答案也很有帮助! - CQM
3个回答

7
invalidate() 方法将强制重绘任何视图:
Drawable replacer = getResources().getDrawable(R.drawable.replacementGraphic);
linearButton.setBackgroundDrawable(replacer);
linearButton.invalidate();

请参阅此处的参考资料。


是的,您想要使视图无效以强制Android重新绘制它。 - Kevin Parker

4

需要更新“正确”的答案。

setBackgroundDrawable()在API 16中已被弃用。

setBackground()在API 16中添加。

一个更好的答案可能是:

int replace = R.drawable.my_image;
myButton.setBackgroundResource(replace);
myButton.invalidate();

或者只是:
myButton.setBackgroundResource(R.drawable.my_image);
myButton.invalidate();

将适用于API级别1-18


1
尝试这个。
linearButton.setImageResource(R.drawable.replacementGraphic);

我希望它能够正常运行。

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