其他分享
首页 > 其他分享> > android-设置DescendantFocusability =“ blocksDescendants”后,列表视图行中的文本视图无法单击

android-设置DescendantFocusability =“ blocksDescendants”后,列表视图行中的文本视图无法单击

作者:互联网

我为列表视图编写了定制的项目布局.布局中有许多小部件,有些将具有自己的clicklistener.

当我单击该行时,有时listview的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

<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提供一些链接功能.

解决方法:

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

>第一.如果您的自定义列表视图的布局具有已在代码中设置为自动链接或Linkify的文本视图,则该文本视图中的click事件将不会影响列表的行.您必须扩展自己的TextView并重写onTouchEvent方法.请看here
>第二.只需在自定义列表视图的根节点中设置android:descendantFocusability =“ blocksDescendants”,然后在将具有自己的onClickListener的小部件中设置android:clickable =“ true”,即可为我工作.

希望对您遇到的那些有用:-)

标签:android,android-listview,descendant
来源: https://codeday.me/bug/20191013/1908138.html