3

我正在尝试创建一个ListView与 Gmail 应用程序类似的应用程序,其中每一行CheckBox左侧都有一个,以便通过上下文操作栏进行多项选择和操作,同时允许单击每一行以转换到另一个活动。

最初,在添加CheckBox行之前,将使用我正在使用的 Holo 主题中的浅蓝色背景颜色来指示它们的选择,并在单击时调用onListItemClick我的ListFragment,并onItemLongClickOnItemLongClickListener长时间单击时调用我的。

当我将CheckBox.xml 文件添加到行视图的布局中时,背景不再改变颜色,并且我不再收到单击或长按事件。如果我将 .xml 添加android:longClickable="true"到我的视图顶部ViewGroup,那么我会再次开始获得长点击事件。但android:clickable="true"不会让我点击事件。并且两者都不允许背景蓝色选择指示返回。只有它CheckBox本身在触摸时提供带有蓝色背景的视觉触摸指示。

我需要做什么才能获得正常的视觉选择指示以及视图中ListView带有 的行上的单击事件CheckBox

这是我的视图.xml的相关部分:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:longClickable="true"
    android:orientation="horizontal" >

    <CheckBox
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center" />

    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:orientation="vertical"
        android:paddingBottom="5dp"
        android:paddingRight="12dp"
        android:paddingTop="5dp" >

        ...

    </LinearLayout>
</LinearLayout>
4

2 回答 2

11

不久前我写了一篇关于这个主题的博客文章,你可能会觉得有帮助。事实上,问题在于,添加可聚焦元素(如CheckBoxButton)会禁用单击整个列表项的功能,并且必须禁用它们的可聚焦性。您也不应该clickable在主布局中添加任何标志。

于 2013-01-12T04:13:01.817 回答
0

在CAB中添加checkbox时请使其focusable="false",这样可以解决onItemCheckedStateChanged只调用一次的问题。

于 2015-06-09T19:27:20.897 回答