2014-07-25 52 views
23

也許這個問題已被問過,但我找不到確切的答案。我在我的L測試應用程序中實現了RecyclerView小部件作爲列表,並且當您單擊列表中的某個項目時,我想獲得「材質效果」。我在ViewHolder創作實施的onClickListener和設置屬性RecyclerView onItemClick效果L

android:background="?android:attr/selectableItemBackground"

爲背景,以我的列表項的佈局(父)。

但這一切都沒有奏效。當我點擊這些項目沒有發生'。有沒有效果,全息圖像,材料,無...請指出,如果我錯了,在這裏做什麼...... THX

回答

37

我犯了一個愚蠢的錯誤,並沒有把

android:clickable="true" 
android:focusable="true" 

到我的清單項目佈局。我認爲這在L之前不是必需的,但這並不重要,因爲這是這種情況下的問題。

+0

您是否知道如何爲項目添加底部邊框?我發現的所有方法都使用根佈局的背景,但我無法使用它,因爲它已經設置了onclick效果。 – Link14

+1

@ Link14你可以實現物品裝飾(你可以調用addItemDecoration()到recyclerView對象)。要實現想要的裝飾(邊框或其他),您需要添加將RecyclerView.ItemDecoration擴展到您的項目並將其修改爲您的需要的類。您將在addItemDecoration()中將此類用作參數。關於這個在這個線程中有更多的解釋http://stackoverflow.com/questions/24618829/how-to-add-dividers-and-spaces-between-items-in-recyclerview。 RecyclerView.ItemDecoration類可在這裏https://gist.github.com/alexfu/0f464fc3742f134ccd1e – Sandra

+0

這對我來說不適用於某些原因... – Micro

41

桑德拉的答案沒有爲我工作。我需要在我的列表項佈局多一個屬性:

android:clickable="true" 
android:focusable="true" 
android:background="?android:attr/selectableItemBackground" 

注:如果您在最後一行粘貼時得到一個錯誤,那麼你的Android應用設置在版本10或以下。只需右鍵單擊Android Studio中的錯誤並進行設置,以便它也會創建v11版本的佈局。然後,在原始佈局中,請務必刪除

android:background="?android:attr/selectableItemBackground"` 

這是因爲動畫在Android或更低版本的v10版本中不受支持。通過設置這兩個佈局文件,動畫將在Android的v11 +版本中正確顯示,當然它不會以較低版本顯示。

(或只是增加你的應用程序的版本的minSdkVersion以高於10)

+2

我沒有在我的問題的答案中放置android:background =「?android:attr/selectableItemBackground」',因爲我在我的問題本身中解釋過,我已經擁有了它在代碼中實現..對於混淆感到抱歉 – Sandra

+2

setFocusable(true)在這裏是不必要的,只要item能夠進入'關注物品'的狀態並且獲得了灰色背景,它就不必要了。漣漪效應即使沒有這個屬性集也可以工作 –

4
android:clickable="true" 
android:focusable="true" 

這些線不再使用。只是加入

android:background="?android:attr/selectableItemBackground" 

工作點擊效果。

+0

現在可能是這種情況。但在問這個問題的時候,我試着用L預覽,點擊效果不見了:) – Sandra

+0

我明白了。我用「不再」編輯我的答案=) –

相關問題