2014-02-19 46 views
1

我为列表视图编写了自定义的项目布局。布局有很多小部件,有些将有自己的clicklistener。设置descendantFocusability =“blocksDescendants”后,列表视图的行中的textview不能点击

当我点击该行时,有时listview的onListItemClick工作,但有时不。

我花了一些时间搜索后,找到了一个方法,在布局的根目录下设置了android:descendantFocusability =“blocksDescendants”。它可以工作,但只有一个文本视图无法工作,(可点击,可卡纸属性已经尝试过)。在列表的适配器中,我设置了textview的onClickListener,它可以工作。但那不是天性,有人知道如何解决它吗?

btw,有没有一种方法来区分不同的小部件'点击?现在,不管我点击了什么(除了那个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提供一些链接功能。

+0

设置该属性可聚焦和focusableOnTouch mode属性和点击porperty为false TextView的XML –

+0

@梆-A-tatRatatouille我将它们都设置为false,但是当我点击textview时,列表的onListItemClick仍然没有被调用。 – longkai

+0

也将线性布局设置为不可点击,并将它们也设置在代码中,也就是说,在getView方法中,通过代码将属性设置为false也对我的不熟练感到抱歉 –

回答

4

经过一段时间的努力,我解决了这两个问题。

  1. 第一。如果您的自定义列表视图的布局的代码中已设置了autolinkLinkify的文本视图,则textview中的点击事件不会影响列表的行。您必须延伸您自己的TextView覆盖onTouchEvent方法。请看它here

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

希望它为那些有用你遇到同样的:-)

+0

[+1] ....这个信息帮助了我 – Devrath

相关问题