Android ListView item 包含 button 或 checkbox 時,會阻止 onclick event

目前在 Android 4.0.4 的手機上測試 ExpandalbeListView 時,發現如果 list item 中有包含 checkbox 或是 button 時,會阻止 expandablistview 中 onGroupClick 或是 onChildClickEvent 事件不能正確的觸發。

尋找網路上的文章,有提到如果 list item 中有 checkbox 或是 button 存在時,要把 checkbox 或是 button 的 android:focusable 設為 false,才可以讓 list item 的 onclick 事件正常的傳遞到 listview 或是 expandablelistview 中。

相對的,也可以反向利用這個特性,如果在程式運作中,想暫時關閉 listview 中某一個 item 的 onclick 事件及顯示效果(點下去會有高亮度反白)的效果時,也可以暫時將 checkbox 的 focusable 屬性設為 true,就可以達成關閉 onclick 事件的效果。

參考資料:
[1] Android – CheckBox blocks ExpandableListView.OnGroupClickListener
[2] Android – Two onClick listeners and one button

廣告

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

您的留言將使用 WordPress.com 帳號。 登出 / 變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 / 變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 / 變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 / 變更 )

連結到 %s

%d 位部落客按了讚: