2010-02-23 174 views

回答

25

您需要設置itemsCanFocus列表這樣的:

mList.setItemsCanFocus(true); 

爲了使按鈕點擊。然後,您將需要使用自己的適配器,並在getView中返回可點擊和可聚焦的視圖。您也將失去默認的高亮狀態,因此您需要將它們放回到背景資源中。所以這樣做:

view.setClickable(true); 
    view.setFocusable(true); 
    view.setBackgroundResource(android.R.drawable.menuitem_background); 

在返回您的視圖之前您的看法。

+3

非常感謝。另外,我不得不添加一個OnClickListener到視圖。 – ggarber 2011-01-09 16:03:14

+1

任何想法如何獲得默認情況下在列表中使用的全息主題的高亮狀態? 'menuitem_background'是橙色的,但默認狀態應該是藍色的。 – rndstr 2012-01-03 15:53:07

+6

這不起作用。 AdapterView.OnItemClickListener從不被調用。 – Chloe 2012-03-25 09:15:03

0

不幸的是我不認爲這是可能的。您ListView行可以有可點擊的小部件,如按鈕,可點擊,而不是兩者。見link.

+2

但谷歌做到了。 – KickingLettuce 2013-04-29 03:32:21

2

嘗試在xml中將您的小部件設置爲非可點擊和不可對焦,點擊項目將正常工作,同時點擊按鈕將正常工作。

android:clickable="false" 
android:focusable="false" 

希望這會有所幫助。

9

每當我看到有關android:focusableandroid:clickable屬性的帖子時,我總是發現它們同時被設置爲相同的值。我認爲如果他們是兩個單獨的屬性而不是一個屬性,那麼一定有一個原因。

事實證明,實現你想要的行爲的一個更好的方法是設置

android:focusable="false" 

yourButton.setFocusable(false) 
Button

View。一旦你這樣做了,你就可以在Button上設置OnClickListener,點擊該行將觸發OnItemClickListener中的onListItemClick()方法。

+1

這對我工作比選擇的答案更好。 – 2014-07-22 14:01:05