我注意到 RelativeLayout 对象的 setBackground 方法针对API 16(Android 4.1)及更高版本,但我的应用程序具有目标API 8和I不能用它。
是否有针对此问题的替代解决方案(除了使用 TargetApi (16)标记类/方法或更改清单中的目标API之外)?
谢谢!
编辑:Eclipse有错误,它向我显示 setBackgroundDrawable 的相同错误,但现在它似乎有效。谢谢你的帮助。
答案 0 :(得分:30)
使用以下其中一项:
.setBackgroundColor(int)
(如果您将其设置为某种颜色).setBackgroundDrawable(Drawable)
(如果您将其设置为Drawable
类型;已弃用,已替换为.setBackground(Drawable)
).setBackgroundResource(int)
(用于设置资源来自R.java
)如果您使用第二个,请务必对您的API版本进行有条件检查:
if (Build.VERSION.SDK_INT >= 16)
view.setBackground(...);
else
view.setBackgroundDrawable(...);
...并使用@TargetApi(16)
和@SuppressWarnings("deprecation")
标记。
答案 1 :(得分:1)
这取决于。如果要将颜色设置为背景,请使用setBackgroundColor()
。对于Drawable,您可以将现已弃用的方法setBackgroundDrawable()
用于16以下的API,将setBackground()
用于API 16设备。您还可以使用setBackgroundResource()
将资源设置为背景。
请注意,虽然很多方法都被标记为已弃用,但我还是遇到了一个实际被删除的方法。因此,即使在API 16中您也可以使用已弃用的方法,我建议您将目标API设置为16并使用if else在方法之间切换,具体取决于设备运行的API版本。
答案 2 :(得分:0)
请改用setBackgroundDrawable()。它做了同样的事情,但自从新的setBackground()
方法以来它已被弃用。