android上setBackgroundDrawable的解决方法?

时间:2012-10-25 14:24:54

标签: android

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

新方法是setBackground(),但当然它只能在API 16中使用。

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

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

3 个答案:

答案 0 :(得分: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警告比必须捕获异常和不必要的反射更好。

答案 1 :(得分:3)

您可以使用

viewobj.setBackgroundResource(drawble_object);

答案 2 :(得分:0)

将位图设置为ImageView。

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