使用新 API 使用 Android Studio 更改布局背景

Change layout background with Android Studio with new API

我想通过单击按钮更改布局背景,但 layoutname.setBackground(drawable) 中出现红色下划线,表示我应该拥有最低 SDK 版本 16 而不是 9(我有)我的问题是,我用来检查的以下代码是否正确?

Resources res = getResources(); //resource handle
Drawable drawable = res.getDrawable(R.drawable.gradientblue);
int sdk = android.os.Build.VERSION.SDK_INT;
if(sdk < android.os.Build.VERSION_CODES.JELLY_BEAN) {
LinearForColor.setBackgroundDrawable(drawable);
           } else {
                LinearForColor.setBackground(drawable);
            }

为什么您不使用 setBackgroundResource() 来代替?它在所有 API 级别(API1 到 API21)中均受支持。

它比其他的更简单。 与其传递可绘制对象,不如传递其中可绘制对象的 ID。 例如,您为 setBackground 和 setBackgroundDrawable 所做的是:

    LinearForColor.setBackgroundDrawable(getResources().getDrawable(R.drawable.myLogo));    
    LinearForColor.setBackground(getResources().getDrawable(R.drawable.myLogo));

对于 setBackgroundResource,只需传递可绘制对象的 ID,如下所示:

LinearForColor.setBackgroundResource(R.drawable.myLogo);

因此您无需担心设备的BuildVersion。是不是更方便?