Android imagebutton以编程方式更改?

Posted

技术标签:

【中文标题】Android imagebutton以编程方式更改?【英文标题】:Android imagebutton change programmatically? 【发布时间】:2011-10-08 18:36:10 【问题描述】:

Hello我有一个图像linearButton XML中的背景可绘制的套件。我想在代码中有条件地替换背景,但它永远不会发生!

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

这似乎无效,是否有一个图像按钮的“重新加载”功能,我必须在它们视觉改变之前调用它?

【问题讨论】:

你所做的应该有效。向我们展示更多代码,以便我们为您提供帮助。 嘿,谢谢它的工作,我的意思是删除这个问题,但添加的答案也很有帮助! 【参考方案1】:

invalidate() 方法将强制重绘任何视图:

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

参考here。

【讨论】:

是的,您想使视图无效以强制 android 重绘它【参考方案2】:

应该更新“正确”的答案。

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

【讨论】:

【参考方案3】:

试试这个

linearButton.setImageResource(R.drawable.replacementGraphic);

我希望它应该工作

【讨论】:

以上是关于Android imagebutton以编程方式更改?的主要内容,如果未能解决你的问题,请参考以下文章

Android:以编程方式向通知添加按钮

在 Android 中的 ImageButton 中适合图像

如何以编程方式将背景颜色从 android.support.design 更改为 MaterialButton

Android:是不是可以使用数字更新 ImageView/ImageButton 以显示新消息的数量?

以编程方式更改图层列表中形状的颜色

以编程方式更改图层列表内形状的颜色