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

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

除了用TargetApi (16)标记类/方法或更改清单中的目标API外,是否还有其他解决scheme?
谢谢!

编辑 :Eclipse是越野车,它显示了setBackgroundDrawable同样的错误,但现在它似乎工作。 感谢您的帮助。

Solutions Collecting From Web of "Android – 以编程方式设置布局背景"

使用以下之一:

  • .setBackgroundColor(int) (如果你将它设置为一个颜色)
  • .setBackgroundDrawable(Drawable) (如果您将其设置为可Drawabletypes;这已被弃用,并被replace为.setBackground(Drawable)
  • .setBackgroundResource(int) (用于从R.java设置资源)

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

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

…并用@TargetApi(16)@SuppressWarnings("deprecation")标记。

这取决于。 如果要将颜色设置为背景,请使用setBackgroundColor() 。 对于Drawable,可以使用现在不推荐使用的方法setBackgroundDrawable()用于16位以下的API, setBackground()用于API 16设备。 您也可以使用setBackgroundResource()来设置资源作为背景。

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

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