我刚刚将我的 Android 项目的构建目标升级到 API 17,现在我收到了关于 setBackgroundDrawable 被弃用的警告。答案似乎是使用 setBackground,但在旧版本中不可用。

使用新方法是否有任何实际优势,或者 Google 只是想更改名称?如果两者工作相同,我认为通过平台版本检查或反射使我的代码复杂化没有任何意义。

最佳答案



他们似乎只想改名,看看 source code :

public void setBackground(Drawable background) {
    //noinspection deprecation
    setBackgroundDrawable(background);
}

@Deprecated
public void setBackgroundDrawable(Drawable background) { ... }

所有的工作仍然在 setBackgroundDrawable() 中完成。现在,您可以忽略弃用警告,但要了解在 future 的某些 API 中 setBackgroundDrawable() 将被删除。

如果你好奇, setBackgroundResource(int resid) 只是从资源 ID 创建一个 drawable 并调用 setBackground() (它再次调用 setBackgroundDrawable() )...

关于java - setBackgroundDrawable() 和 setBackground() 的区别,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13729675/

10-11 03:52