我正在编写一个只有一个按钮的程序。一开始,按钮是默认颜色;单击按钮时,其背景颜色变为红色,然后再次单击,其背景颜色变为默认颜色。关于在方法中编写代码有什么建议myButton.setOnClickListener(new OnClickListener(){}
吗?谢谢
问问题
3926 次
3 回答
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 文件中指定。不需要听者。
于 2012-07-04T19:05:45.807 回答
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;
}
});
另一种解决方案是扩展按钮类,将您的 isSelected 标志存储为成员类。这样,您可以在任何需要的地方重复使用这种按钮。
于 2012-07-04T18:59:48.930 回答
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;
}
于 2012-07-04T19:08:15.180 回答