如何在不使用@SuppressLint("NewApi")
的情况下设置放置在可绘制视图中的xml背景文件?
例如我为textview
创建了一个可绘制的xml文件当我调用TV.setBackground(getResources().getDrawable(R.drawable.tv_pic_back));
时,eclipse会在我的第一个函数中自动添加@SuppressLint("NewApi")
。
如何在没有@SuppressLint("NewApi")
的情况下使用它?
答案 0 :(得分:4)
我有一个类,我在其中放置了大量代码来处理不同的API,因此您可以为一个API使用一行代码,为另一个API使用另一行代码。
public static void setBackgroundDrawable(View view, Drawable drawable) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
view.setBackground(drawable);
}
else {
view.setBackgroundDrawable(drawable);
}
}
这仍然会给您一个警告,因为setBackgroundDrawable
已被弃用,但如果您将setBackground(drawable)
用于所有版本,那么您的应用程序将在低于Jelly Bean(API 16)的API级别上崩溃。
但是,在您的情况下,您需要做的只是实际setBackgroundResource(R.drawable.tv_pic_back);
,因为您不需要自己从资源ID中获取drawable,如果您给它资源ID,Android将为您执行此操作你称之为正确的方法。
Android developer reference将告诉您哪些方法已弃用以及哪些方法在哪个API版本中实现。