9

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

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

编辑:Eclipse 是错误的,它向我显示了setBackgroundDrawable的相同错误,但现在它似乎可以工作。谢谢您的帮助。

4

3 回答 3

30

使用以下之一:

如果您使用第二个,请确保对您的 API 版本进行条件检查:

if (Build.VERSION.SDK_INT >= 16)
    view.setBackground(...);
else
    view.setBackgroundDrawable(...);

...并用 and 标记@TargetApi(16)@SuppressWarnings("deprecation")

于 2012-10-01T18:37:54.830 回答
1

这取决于。如果要将颜色设置为背景,请使用setBackgroundColor(). 对于 Drawable,您可以对setBackgroundDrawable()16 以下的 API 和setBackground()API 16 设备使用现已弃用的方法。您还可以setBackgroundResource()用于将资源设置为背景。

请注意,虽然许多方法被标记为已弃用,但我还没有遇到一个实际上已被删除的方法。因此,即使在 API 16 中您也可以使用已弃用的方法,但我建议您将目标 API 设置为 16 并使用 if else 在方法之间切换,具体取决于设备运行的 API 版本。

于 2012-10-01T18:38:02.430 回答
0

请改用setBackgroundDrawable()。它做同样的事情,但自从新setBackground()方法以来它已被弃用。

于 2012-10-01T18:37:37.330 回答