我只用一个按钮编写程序。开始时,按钮是默认颜色;当点击按钮时,它的背景颜色变为红色,然后再次点击,其背景颜色变为默认颜色。有关使用myButton.setOnClickListener(new OnClickListener(){}
方法编写代码的任何建议吗?感谢
答案 0 :(得分:1)
// Class member variable
private Drawable defaultDrawable;
myButton.setOnClickListener(new OnClickListener()
{
if(defaultDrawable == null)
{
defaultDrawable = myButton.getDrawable();
myButton.setBackgroundColor(Color.BLUE);
}
else
{
myButton.setBackgroundDrawable(defaultDrawable);
defaultDrawable=null;
}
}
你绝对可以改善逻辑,使其更具可读性。
你也可以简单地使用ToggleButton,它有两种状态。每个州都有自己的背景可绘制/颜色,您可以在xml文件中指定。不需要听众。
答案 1 :(得分:0)
你可以做到这一点:
boolean isSelected = false;
int color1 = R.color.mycolor1;
int color2 = R.color.mycolor2;
myButton.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
if(isSelected){
btn.setBackgroundColor( color1 );
} else {
btn.setBackgroundColor( color2 );
}
isSelected = !isSelected;
}
});
另一种解决方案是扩展Button类,将isSelected标志存储为成员类。通过这种方式,您可以在任何需要的地方重复使用此类按钮。
答案 2 :(得分:0)
您可以从当前主题的R.attr.buttonStyle中获取颜色,如下所示:
public static int getAttrResId( Context context, int attrId ) {
TypedValue outValue = new TypedValue();
context.getTheme().resolveAttribute( attrId, outValue, true );
return outValue.resourceId;
}