Android中如何创建自定义的复选框?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android中如何创建自定义的复选框?相关的知识,希望对你有一定的参考价值。

在我的应用中,有一个activity包含了7个复选框。但SDK给提供的复选框默认状态下实在是太大了,占用了很多的空间。我想试着自定义一些复选框。现在我已经做出了2个图片(一个是选中状态,一个是未选状态),用点击鼠标控制开关,比如当点击一个未选中状态的复选框时转换为选中状态,反之亦然。但我不知道怎么来实现这个功能。

1.首先在drawable文件夹中添加drawable文件checkbox_style.xml。
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/checkbox_pressed" android:state_checked="true"/>

<item android:drawable="@drawable/checkbox_normal" android:state_checked="false"/>
<item android:drawable="@drawable/checkbox_normal"/>
</selector>
2.在values文件夹下的styles.xml文件中添加CustomCheckboxTheme样式。
<style name="CustomCheckboxTheme" parent="@android:style/Widget.CompoundButton.CheckBox">
<item name="android:button">@drawable/checkbox_style</item>
</style>
3.在布局文件中使用CustomCheckboxTheme样式。
<CheckBox
android:id="@+id/select_all"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@style/CustomCheckboxTheme" />
使用到的图片资源

checkbox_normal.png
checkbox_pressed.png
参考技术A 就算是使用了selector也会有一个最小的宽和高度的限制 参考技术B 楼上的方法是经常使用到的 楼主可以试试 参考技术C 哇,斑竹们都热情,小生有点小激动了,谢谢啦,我会一一查看学习的,

如果自定义列表视图行内容是动态的,如何使用视图持有者?

【中文标题】如果自定义列表视图行内容是动态的,如何使用视图持有者?【英文标题】:how to use view holder if custom listview row content are dynamic? 【发布时间】:2014-12-29 19:02:47 【问题描述】:

我已经使用基本适配器创建自定义列表视图到动态行 content.row 内容以编程方式创建(复选框、文本视图),它们包含在布局中。 滚动时间的问题他们很慢,因为不使用 视图持有人。我如何使用视图持有者这种类型的自定义列表视图? 有什么解决方案或建议吗?

关注此列表..

【问题讨论】:

每行需要多少个最大动态视图?如果固定为 3 或 4,那么您可以在适配器视图中创建它并根据需要设置可见性。 可能是连续创建视图的数量,最初我们无法预测会创建多少视图。 使用表格布局并添加行数 【参考方案1】:

ViewHolder 在重复相同视图时用于列表视图。假设您的活动中一次总共可见 6 个项目。然后使用 viewholder 模式 6+2=8 个视图一次会被膨胀。顶部多一个,底部多一个,以提供平滑的滚动效果。现在假设执行了向上滚动操作,并且第 8 位的 item 是可见的,第 0 位的 item 将被回收并作为第 9 个 item 附加到列表的末尾。如果视图不同,则无法执行此回收。检查https://www.youtube.com/watch?v=wDBM6wVEO70

对于您的问题,您可以假设可能有 5 个最大值,然后您可以使用内部的 10 个动态视图创建适配器视图并根据需要设置可见性。

另一个选项是使用LinearLayout 并动态添加每一行,但这不会带来太多优化。

【讨论】:

以上是关于Android中如何创建自定义的复选框?的主要内容,如果未能解决你的问题,请参考以下文章

使用android中的自定义arrayadapter在listview中使用复选框检查后如何删除多个项目?

自定义复选框图像android

Kivymd:如何在不创建自定义类的情况下在列表项中添加复选框?

Android:需要在自定义适配器列表视图中保存复选框状态

Android - 通过复选框使用自定义适配器从列表视图中获取项目

使用自定义arrayadapter从listview android中删除复选框选择的多个项目