我想为按钮设置背景。有了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
或更早版本?
虽然以上两个答案都很接近,但您确实应该使用
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);
}
试试这个。。。
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接收参数(drawable background)。。。
我希望能帮助你。。。
setBackground方法仅适用于API 16级或更高级别。您可能正在使用API级别低于16的方法,这就是它抛出NoSuchMethodError
的原因。对于较低的API版本,您可能需要尝试setBackgroundDrawable
。像这样的东西就可以了:
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);
}