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

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

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

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

  • Android - 同一行中的两个button填充整个宽度
  • 在焦点/按下TextView颜色更改
  • Android相对布局对齐父权限
  • 以编程方式将RelativeLayout更改为RightOf toLeftOf
  • ScrollView中的相对布局
  • 使用wrap_content展开TextView,直到邻居视图到达父级的末尾
  • Android:在ImageView中使用大图片的速度较慢
  • 以编程方式在后台具有GL视图的软键盘上的EditText
  • 使用以下之一:

    • .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()方法已被弃用。