2010-07-16 65 views
37

我有一個線性佈局,其中每一行都是以編程方式膨脹,我希望這些行在點擊時表現得像ListView一樣。也就是說,我希望該行以與默認ListView完全相同的方式/顏色高亮顯示。我會如何去做這件事?Android如何使點擊時突出顯示?

回答

56

好,我終於想通了,如何做到這一點...基本上它是使用像按風格聯除了沒有「色」的顏色選擇器選擇使用可繪製的狀態完成,你可以參考默認在ListView中使用的列表是這樣的:

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
<item android:state_pressed="true" 
    android:drawable="@android:drawable/list_selector_background" />  
</selector> 

並使用此xml作爲我的View的背景。

所有公共默認繪項目可以在這裏找到:http://developer.android.com/reference/android/R.drawable.html

+0

感謝您分享回來,一旦你找到它。 – 2011-04-07 03:41:17

+6

如果你像我一樣,需要一些關於如何使用這種選擇器的背景知識,請閱讀:http://android-journey.blogspot.com/2009/12/android-selectors.html – 2013-07-28 12:37:08

+0

你碰巧知道如何保持textview選擇?我有兩個片段1列表視圖和1個信息的textview。一旦選擇了列表視圖中的項目,文本視圖中的項目就會改變。有沒有辦法保持所選的listitem被選中? – ksudu94 2013-11-05 16:23:33

2

This可能會開始尋找一個好地方。

雖然,我會建議你使用ListView本身,而不是重新實現它。

+0

我會使用ListView但是我需要它不滾動,並將其放在一個ScrolView內創建任何透明的顏色,並且似乎並不可能(?)...所以我最終想使用LinearLayout實現我自己的ListView。 – Kman 2010-07-16 09:29:11

+0

和感謝或鏈接......但是有可能引用和使用默認的ListViews選擇器元素,而不是創建自己的? – Kman 2010-07-16 09:31:39

+0

你可能會搜索Android的源代碼內的XML ...只是複製它?我不確定是否引用現有的選擇器,否則。其中一個ListView的使用......反正我試圖創造我自己的,但它似乎沒有工作,但我有問題 – st0le 2010-07-16 09:44:31

20

我能夠用做同樣用文本視圖,我想表現得像一個列表項:

<Textview 
.... 
android:background="@android:drawable/list_selector_background" 
/> 
+2

這是最好的解決方案。謝謝 – Atomix 2013-09-17 18:53:30

+6

很好的答案。對於API 11及更高版本,請改用'android:background =「?android:attr/selectableItemBackground」'。更多信息[此處](http://stackoverflow.com/questions/5546514/making-a-linearlayout-act-like-an-button) – 2014-05-08 19:15:40

+1

..和使用程序兼容性-V7庫,您現在可以使用ATTR/selectableItemBackground爲了向後兼容 – Egor 2014-11-27 14:55:52

2

如果你仍然有一個問題,那麼請記住,有些UI元素是不可點擊(RelativeLayout的),所以你必須增加一個行:

<RelativeLayout 
    .... 
    android:clickable="true" 
    ... 
1

到你的列表視圖集屬性

android:listSelector="@color/test" 

和這個測試顏色設置任何你喜歡的透明顏色。您可以通過使用hex transparent color