Android CheckedTextView没有';我对点击没有反应
我有一个动态填充CheckedTextView的listview。listview设置为多选模式。我正在使用McClickListener响应listview上的单击。此外,我还制作了一个带有CheckedTextView布局的XML文件(实际上它只是标准android.R.layout.simple\u list\u item\u multiple\u选项的副本)。因此,在这种情况下,一切正常:当我在listview中单击一个项目时,相应的checkedtextview变为checked。但是当我尝试使用以下布局时,checkedtextview不会响应单击,并且仍然未选中Android CheckedTextView没有';我对点击没有反应,android,android-layout,checked,checkedtextview,Android,Android Layout,Checked,Checkedtextview,我有一个动态填充CheckedTextView的listview。listview设置为多选模式。我正在使用McClickListener响应listview上的单击。此外,我还制作了一个带有CheckedTextView布局的XML文件(实际上它只是标准android.R.layout.simple\u list\u item\u multiple\u选项的副本)。因此,在这种情况下,一切正常:当我在listview中单击一个项目时,相应的checkedtextview变为checked。但是
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/ll"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:orientation="vertical"
android:padding="5px">
<CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/text1"
android:layout_width="fill_parent"
android:layout_height="?android:attr/listPreferredItemHeight"
android:gravity="center_vertical"
android:drawableLeft="@drawable/checkbox_selector"
android:paddingLeft="6dip"
android:paddingRight="6dip"
android:background="#00ffffff"
android:textSize="15sp"
android:singleLine="true"/>
</LinearLayout>
我猜这是因为CheckedTextView被放在LinearLayout中,它们没有从Listview的列表项接收到click事件。即使它们没有接收到OnClick事件,也可以使用相同大小的列表项的布尔ArrayList来维护这些复选框的状态。我刚刚回答了类似的问题。我希望它能给你一个更好的主意。我想不一样。如果查看,您将看到一个
android:checkMark
属性设置为?android:attr/listcooiceindicator multiple
。这是CheckedTextView
内部用来绘制处于任何状态的复选框的内容,您可以从中看到
但是布局中的CheckedTextView
的定义缺少此属性。我会责怪这一点,而不是在LinearLayout
元素中使用CheckedTextView
我错了,你猜对了。似乎自定义
列表视图的行
需要实现可检查的
,而已检查的文本视图
需要实现,但线性布局
不需要。有关详细信息,请参见另一个StackOverflow线程。我也遇到了同样的问题,因此我将布局更改为android.R.layout.simple\u list\u item\u multiple\u选项,而不是使用带有CheckedTextView的自定义布局。此问题有两个简单的解决方案:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:state_activated="true" android:drawable="@drawable/checkbox_selected"/>
<item android:state_activated="false" android:drawable="@drawable/checkbox_deselected" />
<item android:state_checked="false" android:drawable="@drawable/checkbox_deselected" />
<item android:state_checked="true" android:drawable="@drawable/checkbox_selected" />
</selector>
资料来源:
中间层解决方案是自定义列表视图的侦听器,如以下代码所示:
MarvinLab提出了一个艰难但正确的解决方案:
相关问题:此问题是由attr
singleLine=true
引起的。如果删除此项或替换为maxLines=1
,它将正常工作。事实上,当你点击这个项目时,状态会被检查——我认为这是一个Android错误