Android PopupWindow中ListView 無法接受點擊事件的處理

開發項目時,我們需要在一個popupWindow當中嵌入一個ListView。不過很奇怪的是我們的這個嵌入在PopupWindow當中的ListView不能響應對ListView當中的item裏面的點擊事件(這時我們的ListView使用是我們自己創建的BaseAdapter,這個BaseAdapter使用的一個單獨的Layout,Layout文件爲每一個ListItem設置的佈局爲一個Button).但是當我們將我們創建的Adapter改成系統自帶的ArrayAdapter,就可以很正常的響應我們的List item的點擊事件了。此時可以確定是我們的Adapter的問題,而不是PopupWindow因爲把點擊事件劫持而引發的問題了。當然我們首先想到的就是ListView當中的自定義佈局用到的是Button,button會自己截獲點擊事件的(注意在ListView當中使用Button是一個很常見的坑,除非我們十分小心才能避免).所以我們很自然的將裏面的Button改成了TextView。測試一下,OK,可以捕獲到ListView當中的點擊事件了。果然是Button的問題了。但是TextView還是有一點太醜了。然後我們繼續作,將TextView的style改成的@android:style/Widget.Button。這時我們內心一定很高興,畢竟還解決了UI方面的問題,但是我們一運行,又捕獲不到ListView當中的點擊事件了。一定是剛纔的Button的style的問題,但是我們只是改了一個Style啊。查了一些文檔才知道Button的默認style當中有一個屬性定義爲android:onclickable=”true”.我們需要將這個屬性去掉纔可以。想不到還有這個坑。改了,OK,一切正常了。

轉自:http://blog.sina.com.cn/s/blog_146b447cb0102vfjf.html

發佈了39 篇原創文章 · 獲贊 41 · 訪問量 24萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章