我正在实现一个简单的方法,通过编程将Button
添加到LinearLayout
。
当我调用setBackground(Drawable background)方法时,抛出了以下Error
:java.lang.NoSuchMethodError: android.widget.Button.setBackground
我的addNewButton方法:
private void addNewButton(Integer id, String name) {
Button b = new Button(this);
b.setId(id);
b.setText(name);
b.setTextColor(color.white);
b.setBackground(this.getResources().getDrawable(R.drawable.orange_dot));
//llPageIndicator is the Linear Layout.
llPageIndicator.addView(b);
}
6条答案
按热度按时间0h4hbjxa1#
您可能在级别低于16(Jelly Bean)的API上进行测试。
setBackground方法仅在该API级别以上可用。
如果是这种情况,我会尝试使用setBackgroundDrawable(已弃用)或setBackgroundResource。
例如:
g6ll5ycj2#
要为视图创建同质背景,可以创建shape类型的可绘制资源,并将其与setBackgroundResource一起使用。
red_background.xml
活动:
但是这样看起来会很糟糕,平面和不合适。如果你想要一个彩色按钮,看起来像一个按钮,那么你可以自己设计(圆角,笔触,渐变填充...)或者一个快速和肮脏的解决方案是添加一个PorterDuff过滤器到按钮的背景:
w8biq8rn3#
由于在Android 16之后,setBackgroundDrawable已被弃用,因此我建议在设置代码之前进行检查
您还需要检查Android的当前版本
ccrfmcuu4#
在Styles.xml文件中应用以下代码:
qgelzfjb5#
将主题从
Theme.MaterialComponents
更改为Theme.AppCompat
xesrikrc6#
您无法使用
setBackground()
。此方法可能在您的Android级别中不可用。