Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/216.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android多次选中复选框并更改xml文件的颜色_Android_Xml_Checkbox - Fatal编程技术网

Android多次选中复选框并更改xml文件的颜色

Android多次选中复选框并更改xml文件的颜色,android,xml,checkbox,Android,Xml,Checkbox,我试图在应用程序启动时有一个红色的复选框。这是一个自定义的圆圈复选框,它们位于xml文件中。如果用户单击它,它将变为黄色。如果用户再次单击它,它将变为绿色。我试图在单击复选框时不必取消选中它,而是在用户每次单击它时将其选中。我不知道这是否可能。我一直在研究如何检查复选框多次,但没有发现任何东西 下面是我如何尝试检查是否检查了多次 chkInProgess.setOnClickListener(new View.OnClickListener() { @Override

我试图在应用程序启动时有一个红色的复选框。这是一个自定义的圆圈复选框,它们位于xml文件中。如果用户单击它,它将变为黄色。如果用户再次单击它,它将变为绿色。我试图在单击复选框时不必取消选中它,而是在用户每次单击它时将其选中。我不知道这是否可能。我一直在研究如何检查复选框多次,但没有发现任何东西

下面是我如何尝试检查是否检查了多次

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++;},这就成功了!谢谢你的帮助!没问题!我很高兴你能弄明白。