Android 開發中踩過的坑之十二: ListView中的焦點搶奪

當ListView設置了OnItemClickListener, Item項裏的View設置了OnClickListener時, spa

常常遇到某一個Listener失效的現象.orm

根本緣由是焦點的問題, 
事件

當item項目中某個View可以獲取焦點時, 根據View焦點傳遞的規則會優先接受點擊事件,
it

如此就會致使ListView的OnItemClickListener失效.List

由於可以自動獲取焦點的View有優先獲取點擊事件的權利,方法

OnItemClickListener是在Item的父節點, 因此它是最後一個處理點擊事件的(雖然最早接收, 項目

可是先分發給子View, 子View處理完後, 最後本身處理). 若是子View處理並消化了點擊事件, ab

那麼OnItemClickListener久失效了.focus


解決的方法:

1 你能夠放棄OnItemClickListener, 只是用OnClickListener.

2 檢查你的Item裏, 時候有focusable=true 和 focusableInTouchMode=true的View. 

    若是有, 把他們都設置成false. 

相關文章
相關標籤/搜索