【发布时间】:2013-03-14 20:16:21
【问题描述】:
在用户将其状态更改为 Checked 后,我尝试更改 CheckBox 背景。下面的代码不能很好地工作。如果我单击未选中的复选框,它将状态和颜色更改为蓝色,当我再次单击它并取消选中时,颜色保持蓝色而不是变为红色。我确实引入了 invalidate() 的调用,但没有成功。我确认该方法收到点击并正确查看检查状态,但我所做的 if 语句 似乎只工作一次。
XML
<CheckBox
android:id="@+id/chkLargeIcons"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="20"
android:onClick="handleCheckBoxClick" />
代码
public void handleCheckBoxClick(View view) {
CheckBox tmpChkBox = (CheckBox) findViewById(view.getId());
if(tmpChkBox.isChecked())
{
tmpChkBox.setBackgroundColor(color.blue);
}
else
{
tmpChkBox.setBackgroundColor(color.red);
}
System.out.println(view.getId() + " " + tmpChkBox.isChecked());
switch (view.getId()) {
case R.id.chkLargeIcons:
...
break;
...
}
...
}
我应该对我的代码进行哪些更改以使其按我的意愿工作?
提前感谢您的任何帮助和建议。
【问题讨论】:
-
你把这段代码放在哪里了?
-
@JustinJasmann 我有多个复选框,我为其指定了相同的“OnClick”方法,此代码在此方法中,并且作为 System.out.println 输出应有的内容,复选框的可视状态单击一两次后保持不变
-
您能否发布更多代码以显示您在此侦听器中的关联位置?
-
@JustinJasmann 完成,虽然我不知道它是如何相关的,而 system.out.println 正确打印与复选框的所有交互
-
我只是想自己重现它。 if/else 对我来说很好用。你在你的开关/机箱里做什么?
标签: android user-interface view background