Android多次选中复选框并更改xml文件的颜色
我试图在应用程序启动时有一个红色的复选框。这是一个自定义的圆圈复选框,它们位于xml文件中。如果用户单击它,它将变为黄色。如果用户再次单击它,它将变为绿色。我试图在单击复选框时不必取消选中它,而是在用户每次单击它时将其选中。我不知道这是否可能。我一直在研究如何检查复选框多次,但没有发现任何东西 下面是我如何尝试检查是否检查了多次Android多次选中复选框并更改xml文件的颜色,android,xml,checkbox,Android,Xml,Checkbox,我试图在应用程序启动时有一个红色的复选框。这是一个自定义的圆圈复选框,它们位于xml文件中。如果用户单击它,它将变为黄色。如果用户再次单击它,它将变为绿色。我试图在单击复选框时不必取消选中它,而是在用户每次单击它时将其选中。我不知道这是否可能。我一直在研究如何检查复选框多次,但没有发现任何东西 下面是我如何尝试检查是否检查了多次 chkInProgess.setOnClickListener(new View.OnClickListener() { @Override
chkInProgess.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int count = 0;
if (chkInProgess.isChecked()){
count++;
}
if (count == 1) {
chkInProgess.setButtonDrawable(R.drawable.custom_yellow_checkbox);
}
if (count == 2){
chkInProgess.setButtonDrawable(R.drawable.custom_green_checkbox);
}
}
});
这是我的复选框代码
<CheckBox
android:id="@+id/chkInProgess"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/inProgress"
android:layout_below="@id/txtGather"
android:button="@drawable/custom_red_checkbox"
android:checked="true"
android:textSize="11dp"
android:layout_marginLeft="25dp"
/>
这是我的circle xml代码。黄色和绿色复选框xml代码类似,只是十六进制值不同
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_checked="true">
<layer-list>
<item>
<shape android:shape="oval">
<corners android:radius="1dp" />
<stroke
android:width="1dp"
android:color="#FFF" />
<solid android:color="#dc7174"/>
<size
android:width="23dp"
android:height="23dp" />
</shape>
</item>
<item
android:width="8dp"
android:height="2dp"
android:top="14dp"
android:left="4dp">
<rotate
android:fromDegrees="45">
<shape android:shape="rectangle">
<solid android:color="#fff"/>
</shape>
</rotate>
</item>
<item
android:width="13dp"
android:height="2dp"
android:top="12dp"
android:left="7dp">
<rotate
android:fromDegrees="-45">
<shape android:shape="rectangle">
<solid android:color="#fff"/>
</shape>
</rotate>
</item>
</layer-list>
</item>
</selector>
任何帮助都将不胜感激。谢谢 因此,我不能完全确定您看到的是什么输出,但是您应该在onClick(View v)方法之外初始化int计数。每次运行计数时都会初始化计数,因此它可能只会是红色或黄色 因此,我不能完全确定您看到的是什么输出,但是您应该在onClick(View v)方法之外初始化int计数。每次运行计数时都会初始化计数,因此它可能只会是红色或黄色 那么问题是什么呢?你的复选框不变?那么问题出在哪里?你的复选框不变?这回答了我的问题!但我也有一个问题,当我点击复选框时,它不会被取消选中,而是每次用户点击它时,它都会变成颜色。所以,我想知道是否有办法确保它保持选中状态,但每次单击它时,它都会改变颜色。我找到了答案。在第一个if语句之后,我有一个else if语句,它说if(!chkInProgress.isChecked){chkInProgress.setChecked(true);count++;},这就成功了!谢谢你的帮助!没问题!我很高兴你能弄明白。这回答了我的问题!但我也有一个问题,当我点击复选框时,它不会被取消选中,而是每次用户点击它时,它都会变成颜色。所以,我想知道是否有办法确保它保持选中状态,但每次单击它时,它都会改变颜色。我找到了答案。在第一个if语句之后,我有一个else if语句,它说if(!chkInProgress.isChecked){chkInProgress.setChecked(true);count++;},这就成功了!谢谢你的帮助!没问题!我很高兴你能弄明白。