列表视图中的textview'在设置descendantFocusability =" blocksDescendants"后,s行无法点击

时间:2014-02-19 19:56:20

标签: android android-listview descendant

我为列表视图编写了自定义项目布局。布局有许多小部件,有些小部件有自己的clicklistener。

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

在我花了一些时间搜索之后,我找到了一种方法,在布局的根目录中设置 android:descendantFocusability =“blocksDescendants”。它可以工作,但只有一个textview无法工作,(可点击的,可用的attr已经尝试过)。在列表的适配器中,我设置了textview的onClickListener,它可以工作。但那不是大自然,有谁知道如何解决它?

顺便问一下,有没有办法区分diffderent小部件'点击?现在,无论我点击什么(除了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提供一些链接功能。

1 个答案:

答案 0 :(得分:4)

花了一些时间尝试后,我解决了两个问题。

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

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

  3. 希望对遇到相同的人有用: - )