0

我想为按钮设置背景。一切正常,Android 4.1.2但如果启动时Android 4.0出现错误

java.lang.NoSuchMethodError: android.widget.Button.setBackground 

带代码

LayerDrawable composite = new LayerDrawable(layers);
button.setBackground(composite);

那么我怎样才能设置LayerDrawable背景但是Android 4.0更早呢?

4

3 回答 3

2

虽然上述两个答案都很接近,但您应该真正使用

Build.VERSION.SDK_INT

因为 Build.VERSION.SDK 返回一个字符串,并且自 API 4 以来已被弃用

if(Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN){
         LayerDrawable composite = new LayerDrawable(layers);
         button.setBackgroundDrawable(composite);
}else{
         LayerDrawable composite = new LayerDrawable(layers);
         button.setBackground(composite);
}
于 2014-12-10T00:35:35.033 回答
0

setBackground方法仅适用于 API 级别 16 或以上。您可能正在使用 API 级别低于 16 的方法,这就是它抛出NoSuchMethodError. 您可能想尝试setBackgroundDrawable较低的 API 版本。这样的事情会做:

if(Build.VERSION.SDK < Build.VERSION_CODES.JELLY_BEAN){
     LayerDrawable composite = new LayerDrawable(layers);
     button.setBackgroundDrawable(composite);
}else{
     LayerDrawable composite = new LayerDrawable(layers);
     button.setBackground(composite);
}
于 2014-09-01T18:52:28.353 回答
0

尝试这个...

if(Build.VERSION.SDK < Build.VERSION_CODES.ICE_CREAM_SANDWICH){
     LayerDrawable composite = new LayerDrawable(layers);
     button.setBackgroundDrawable(composite);
}else{
     LayerDrawable composite = new LayerDrawable(layers);
     button.setBackground(composite);
}

setBackground drawable 接收作为参数(可绘制背景)...

我希望能帮助你...

于 2014-09-01T18:43:54.753 回答