请问Checkbox的问题

例如,有多篇文章,文章列表,有个CheckBox表示全选,全不选,和部分选中。但是android 自带的CheckBox只有2个状态, 选中和不选中,
这种3个状态的Checkbox感觉是个通用的需求,如果自己做一个,还得找图片也麻烦,感觉又在造轮子,请问有推荐的现成的实现吗?你们都是自己做的吗?

可以使用Android自带的CheckedTextView来实现三个状态的选择框。CheckedTextView继承自TextView,可以设置三种状态:选中、未选中和部分选中。可以通过设置CheckedTextView的checkMark属性来改变选中状态的图标。

示例代码:

<CheckedTextView
    android:id="@+id/checkbox"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Checkbox"
    android:checkMark="@drawable/checkbox_selector"
    android:clickable="true"
    android:focusable="true"
    android:padding="10dp"
    android:gravity="center_vertical"
    android:textSize="16sp" />

其中,@drawable/checkbox_selector是一个selector,用来设置选中状态的图标。可以在drawable文件夹下创建一个checkbox_selector.xml文件,内容如下:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/ic_check_box" android:state_checked="true" />
    <item android:drawable="@drawable/ic_check_box_outline_blank" android:state_checked="false" />
    <item android:drawable="@drawable/ic_indeterminate_check_box" android:state_checked="false" android:state_focused="true" />
</selector>

其中,ic_check_box、ic_check_box_outline_blank和ic_indeterminate_check_box是三种状态的图标,可以自行替换。

  • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/727631
  • 除此之外, 这篇博客: Android之CheckBox实例实现中的 需要实现的需求 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • XML我是通过约束布局通过拖拽的方式来实现的,三个checkbox选项,
    以及全选,全部选,获取内容三个Button按钮,和一个获取内容结果的TextView文本框。
    1.需要实现的是点击全选,上面的checkBox全部被选中;
    2.点击全不选,上面的checkBox全部不被选中,
    3.点击获取内容,右边的TextView显示选中的内容

  • 以下回答由chatgpt基于相关博客总结生成:

    可以使用第三方库MultiStateCheckbox,它可以实现3个状态的多选框,包括全选、全不选和部分选中。

    使用方法如下:

    1.导入库

    在app的build.gradle中加入以下代码:

    dependencies { implementation 'com.github.lazylibrary:MultiStateCheckbox:0.1.0' }

    2.在xml布局文件中添加控件

    3.在代码中设置监听和状态

    MultiStateCheckbox triCheckBox = findViewById(R.id.triCheckBox); triCheckBox.setOnStateChangedListener(new MultiStateCheckbox.OnStateChangedListener() { @Override public void onStateChanged(int state) { switch (state) { case MultiStateCheckbox.STATE_ALL: // 全选 break; case MultiStateCheckbox.STATE_HALF: // 部分选中 break; case MultiStateCheckbox.STATE_NONE: // 全不选 break; } } }); triCheckBox.setState(MultiStateCheckbox.STATE_ALL); // 全选 triCheckBox.setState(MultiStateCheckbox.STATE_HALF); // 部分选中 triCheckBox.setState(MultiStateCheckbox.STATE_NONE); // 全不选

    以上就是使用MultiStateCheckbox实现3个状态的多选框的方法。

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632