您好我有一个图像按钮linearButton
,它在XML中有一个背景可绘制集。我想有条件地替换代码中的背景,但它永远不会发生!
Drawable replacer = getResources().getDrawable(R.drawable.replacementGraphic);
linearButton.setBackgroundDrawable(replacer);
这似乎是无效的,是否有一个“重新加载”功能,我必须在视觉上改变之前调用图像按钮?
答案 0 :(得分:7)
invalidate()
方法将强制重绘任何视图:
Drawable replacer = getResources().getDrawable(R.drawable.replacementGraphic);
linearButton.setBackgroundDrawable(replacer);
linearButton.invalidate();
请参阅here以供参考。
答案 1 :(得分:4)
"正确"答案应该更新。
API 16中已弃用 setBackgroundDrawable()
setBackground()
更好的答案可能是:
int replace = R.drawable.my_image;
myButton.setBackgroundResource(replace);
myButton.invalidate();
或只是:
myButton.setBackgroundResource(R.drawable.my_image);
myButton.invalidate();
将从API级别1-18开始
答案 2 :(得分:0)
试试这个
linearButton.setImageResource(R.drawable.replacementGraphic);
我希望它能够发挥作用