ListView 中的自定义复选框
Posted
技术标签:
【中文标题】ListView 中的自定义复选框【英文标题】:Custom checkBox in ListView 【发布时间】:2015-06-27 03:21:46 【问题描述】:在我的应用程序中,我有一个带有自定义行的 ListView
,我想为每个项目添加一个自定义 CheckBox
,如下所示:
当我点击“编辑”时,我希望 ListView
向右平移,并在每个 ListView
行的左侧显示一个自定义 CheckBox
。
即使看不到某些行图标(如星形或箭头),是否可以将ListView
保持在右侧?或者,如果我翻译右边的ListView
,行被压缩并且所有图标都可见?
我已经发了TranslateAnimation
:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
<translate
android:fromXDelta="0%"
android:toXDelta="17%"
android:duration="750" />
</set>
我已经成功翻译了ListView
,但在 2 秒后它又回到了初始位置……我该如何管理ListView
在TranslateAnimation
之后保持不变?
在行的左侧放置一个像“gone”这样的复选框,当按下“EDIT”按钮以使所有复选框都可见时会更好吗?在这种情况下,每一行是像图像一样向右平移还是被压缩并且所有图标都可见?
谢谢
编辑:
我的行 xml 文件:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_
android:layout_
android:background="@color/backgr_greysoft" >
<LinearLayout
android:id="@+id/row_information"
android:layout_
android:layout_
android:background="@drawable/button_file"
android:descendantFocusability="blocksDescendants"
android:layout_margin="@dimen/rowDescargas_marginLateral"
android:orientation="horizontal"
android:weightSum="1" >
<ImageView
android:id="@+id/icon"
android:layout_
android:layout_
android:layout_gravity="center"
android:layout_margin="@dimen/rowDescargas_marginIcono"
android:layout_weight="0.25" />
<LinearLayout
...
</LinearLayout>
</LinearLayout>
</RelativeLayout>
【问题讨论】:
不完全是你要找的东西,但this 应该给你一个公平的想法 【参考方案1】:是的,放一个像gone
这样的复选框。并设置为您的信息视图如下:
android:layout_
android:layout_weight="1"
此视图的父级应为 LinearLayout
和 android:orientation="horizontal"
。
【讨论】:
但是,我应该为 CheckBox 设置什么宽度和重量?因为如果我将 weight=1 放在另一个视图中... 对于CheckBox
设置android:layout_width="wrap_content"
。【参考方案2】:
custom_checkbox.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_checked="true"
android:drawable="@xml/checked" />
<item android:state_pressed="true"
android:drawable="@xml/checked" />
<item android:drawable="@xml/unchecked" />
</selector>
checked.xml
<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient android:startColor="#ff2665B4" android:endColor="#ff2665B4" android:angle="270"/>
<stroke android: android:color="#ffc0c0c0" />
<size android: android:/>
</shape>
unchecked.xml
<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient android:startColor="#ffffff" android:endColor="#ffffff" android:angle="270"/>
<stroke android: android:color="#ffc0c0c0" />
<size android: android:/>
</shape>
设置为复选框
facilityCheck.setButtonDrawable(R.xml.custom_checkbox);
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_
android:layout_
android:background="@color/backgr_greysoft" >
<CheckBox
android:layout_
android:layout_
android:id="@+id/chk_facility"
android:layout_alignParentLeft="true"
/>
<ImageView
android:id="@+id/icon"
android:layout_
android:layout_
android:layout_gravity="center"
android:layout_margin="@dimen/rowDescargas_marginIcono"
android:layout_toRightOf="@+id/chk_facility" />
</RelativeLayout>
【讨论】:
我在最后一行得到一个 'NullPointerException' ...(3 个文件放在 'res/xml' 文件夹中) facilityCheck 是您在 listview 行 xml 文件中的复选框。 我已经知道了,我的适配器类有问题。你知道我应该给复选框添加多少重量吗?还是不增重? 我觉得没必要增重。 请给我你的行 xml 文件。以上是关于ListView 中的自定义复选框的主要内容,如果未能解决你的问题,请参考以下文章
TextView 在 ListView 内的自定义 ArrayAdapter 中被切断
listView中带有复选框的自定义布局:当我删除一行时,如果选中它(checkBox = true),则下一行将获得检查