本文實例講述了Android7.0上某些PopuWindow出現顯示位置不正確問題的解決方法。分享給大家供大家參考,具體如下:
情景描述:
在andorid7.0及以上系統,點擊某個view,本來期待有一個Popuwindow在該view下面彈出(調用PopuWindow.showAsDropDown(view)方法)但結果PopuWindow卻彈出在view上方,頂在系統狀態欄下面。
原因分析:
在android7.0上,如果不主動約束PopuWindow的大小,比如,設置布局大小為 MATCH_PARENT,那么PopuWindow會變得盡可能大,以至于 view下方無空間完全顯示PopuWindow,而且view又無法向上滾動,此時PopuWindow會主動上移位置,直到可以顯示完全。
解決辦法:
主動約束PopuWindow的內容大小,重寫showAsDropDown方法:
@Overridepublic void showAsDropDown(View anchor) { if(Build.VERSION.SDK_INT >= 24){ Rect visibleFrame = new Rect(); anchor.getGlobalVisibleRect(visibleFrame); int height = anchor.getResources().getDisplayMetrics().heightPixels - visibleFrame.bottom; setHeight(height); } super.showAsDropDown(anchor);}希望本文所述對大家Android程序設計有所幫助。
新聞熱點
疑難解答