1

我为列表视图编写了自定义项目布局。布局有很多小部件,有些会有自己的点击监听器。

当我单击该行时,有时列表视图的 onListItemClick 工作,但有时不工作。

在我花了一些时间搜索之后,我找到了一种方法,在布局的根中设置android:descendantFocusability="blocksDescendants" 。它可以工作,但只有一个 textview 不能工作,(已尝试可点击、可触发的属性)。在列表的适配器中,我设置了 textview 的 onClickListener,它可以工作。但这不是自然现象,有人知道如何解决吗?

顺便说一句,有没有办法区分不同的小部件的点击?现在,无论我点击什么(除了那个 textview),整行的背景选择器都会改变。

非常感谢!

// 我的列表行布局根

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:descendantFocusability="blocksDescendants"
android:padding="@dimen/medium"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent">

// 糟糕的文本视图

<TextView
        android:id="@+id/text"
        android:textColor="@android:color/secondary_text_light"
        android:textColorLink="@android:color/holo_blue_dark"
        android:layout_marginTop="@dimen/small"
        android:textAppearance="@android:style/TextAppearance.DeviceDefault"
        android:layout_below="@id/nick"
        android:layout_alignLeft="@id/nick"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

更新

textview 使用 Linkify 提供一些链接功能。

4

1 回答 1

5

在花了一些时间尝试后,我都解决了。

  1. 首先。如果您自定义的列表视图的布局具有已设置 autolinkLinkify在代码中设置的文本视图,则文本视图中的单击事件不会影响列表的行。您必须扩展自己的TextView覆盖 onTouchEvent方法。请看这里

  2. 第二。只需在自定义列表视图的根节点中设置:android:descendantFocusability="blocksDescendants",然后在您的小部件中设置自己的onClickListener设置android:clickable="true",它对我有用。

希望它对您遇到相同的人有用:-)

于 2014-02-20T13:52:03.820 回答