不推荐使用的方法,但替换方法需要更高的api

Nie*_*els 23 android deprecated

我想使用view.setBackgroundDrawable(Drawable)不推荐使用此方法.它被替换为.setBackground(Drawable).但我的最低API 8无法处理.它告诉我将最小值设置为API 16.

有没有办法根据设备的API使用不同的方法?

就像是

if(API<16)
{
  view.setBackgroundDrawable(Drawable)
}
else
{
  view.setBackground(Drawable)
}
Run Code Online (Sandbox Code Playgroud)

或者我真的必须更改最低API才能执行此操作吗?

Ant*_*met 40

setBackgroundDrawable已弃用但它仍然有效,因此您可以使用它.但如果你想完全正确,你应该使用这样的东西

int sdk = android.os.Build.VERSION.SDK_INT;
if(sdk < android.os.Build.VERSION_CODES.JELLY_BEAN) {
    setBackgroundDrawable()
} else {
    setBackground();
}
Run Code Online (Sandbox Code Playgroud)

为此,您需要将buildTarget api 16和min build设置为7或类似的东西.

  • 在此代码中......警告仍会显示,您可以使用抑制警告将其删除! (3认同)
  • 实际上我需要这两个:@SuppressLint("NewApi")@ SuppressWarnings("弃用") (3认同)

Sim*_*mon 7

像这样的东西:

if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN){
   view.setBackgroundDrawable(Drawable)
} else {
   view.setBackground(Drawable)
}
Run Code Online (Sandbox Code Playgroud)


Ren*_*ith 5

您可以根据API版本使用不同的方法.

例如:

if (Build.VERSION.SDK_INT < Build.VERSION_CODES.FROYO) {
        //Methods for version <8 (FROYO)
} else {
        // Methods for version >=8
}
Run Code Online (Sandbox Code Playgroud)

这里将您设置targetSDkversion为任何更高版本(例如此处为16)并设置minsdkversion为更低版本(API 7).