使用新 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。是不是更方便?
我想通过单击按钮更改布局背景,但 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。是不是更方便?