Android button.setBackground
Posted
技术标签:
【中文标题】Android button.setBackground【英文标题】: 【发布时间】:2014-10-26 00:05:41 【问题描述】:我想为按钮设置背景。使用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
或更早?
【问题讨论】:
***.com/questions/18559248/… 创建xml层并为你的按钮设置它 button.setBackgroundDrawable(getResources().getDrawable(R.drawable.layer)); (setBackground 来自 api 级别 16) 【参考方案1】:试试这个...
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 接收作为参数(可绘制背景)...
希望能帮到你……
【讨论】:
【参考方案2】:setBackground 方法仅适用于 API 级别 16 或以上。您可能正在使用低于 16 的 API 级别的方法,这就是它抛出 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);
【讨论】:
@DenisKotenko 很高兴知道这一点!不要忘记将此答案标记为正确:)【参考方案3】:虽然以上两个答案都很接近,但您应该真正使用
Build.VERSION.SDK_INT
由于Build.VERSION.SDK返回一个字符串,并且一直是deprecated since 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);
【讨论】:
以上是关于Android button.setBackground的主要内容,如果未能解决你的问题,请参考以下文章
Android 逆向Android 权限 ( Android 逆向中使用的 android.permission 权限 | Android 系统中的 Linux 用户权限 )