Android - 以编程方式设置布局背景

时间:2012-10-01 18:33:17

标签: android eclipse android-layout relativelayout

我注意到 RelativeLayout 对象的 setBackground 方法针对API 16(Android 4.1)及更高版本,但我的应用程序具有目标API 8和I不能用它。

是否有针对此问题的替代解决方案(除了使用 TargetApi (16)标记类/方法或更改清单中的目标API之外)?
谢谢!

编辑:Eclipse有错误,它向我显示 setBackgroundDrawable 的相同错误,但现在它似乎有效。谢谢你的帮助。

3 个答案:

答案 0 :(得分:30)

使用以下其中一项:

如果您使用第二个,请务必对您的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()方法以来它已被弃用。