5

类的setBackgroundDrawable()方法View现在在 android SDK API 级别 16 中已弃用。

新方法setBackground()当然只在 API 16 中可用。

如果我希望我的应用程序与以前的 API 级别兼容,我该如何解决它?(至少 API 14)

目标是消除任何警告,@SupressWarnings 对我来说不是解决方案。

4

3 回答 3

15

通常的方法是这样的:

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

另一方面,您可以使用反射:

try {
  Method setBackground = View.class.getMethod("setBackground", Drawable.class);
  setBackground.invoke(myView, myDrawable);
} catch (NoSuchMethodException e) {
  setBackgroundDrawable(myDrawable);
}

IMO 发出警告比必须捕获异常和不必要的反思要好。

于 2012-10-25T14:27:17.807 回答
3

您可以使用

viewobj.setBackgroundResource(drawble_object);
于 2014-03-20T16:12:13.630 回答
0

将位图设置为 ImageView。

ImageView imageView = (ImageView) findViewById(R.id.imageSlice4); imageSlice4.setBackground(new BitmapDrawable(getResources(), slicedImagesArrayList.get(3)));

于 2017-04-30T15:39:01.643 回答