2014-02-19 35 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

相關問題