1. 程式人生 > >PopUpWindow位置指定對小米4(Android7.0)相容適配

PopUpWindow位置指定對小米4(Android7.0)相容適配

本文測試環境為Android7.0版本的小米4,因為今天是年前最後一天上班的關係,才有時間寫個部落格,也是這個原因,心情浮躁,沒有時間做多餘的測試。所以尚不清楚是機型適配問題還是Android7.0版本的問題。因為產品中存在沉浸欄,之前懷疑是沉浸欄對此功能的適配性不佳,後來去掉沉浸欄發現問題仍然存在。

下面進入正題。

UI要求的效果如下圖所示:


一切都很正常,直到測試拿出小米4手機測試,效果卻變成了這樣:


這踏馬的就尷尬了不是麼???

我使用的方法為:


popupwindow.showAsDropDown(view,x,y),

這個方法可以指定一個控制元件的下方顯示當前popupwindow。且能控制間距。

我這裡傳入的view為右上角的藍色小圖示,但是顯然這條屬性在小米4上是失效了的。

後來把popupwindow的高設定成包裹內容,就可以了,小米4手機上popupwindow在需求的控制元件下方顯示。但是又有一個問題出現了,UI要求的是剩餘部分為透明灰色啊,把控制元件寫成包裹內容雖然解決了機型適配問題,但是螢幕剩餘部分則變成了純透明色啊,activity裡的內容展露無遺,UI不同意也沒辦法通過測試啊。

最後實在找不到方法了,只能做點小手腳了。popupwindow的寬高仍然為充滿父窗體,但是,我可以把popupwindow多套一層佈局,讓其最外層為純透明色,而內層則為透明灰色,同時具備上邊距margin,高度則看UI需求了。同時,我在activity的佈局最上方寫了一個高度為0 的View,讓它作為popupwindow的錨點,(根佈局應該也可以,沒有試)。這樣,在普通手機上popupwindow距離手機頂端的控制元件有上邊距,而小米4這種不支援的手機則是距離手機上頂端有上邊距,結局還是一樣的。

這樣,解決了機型適配的問題。


下面簡單貼一下程式碼:

popupwindow的程式碼:


popupwindow的佈局程式碼:


希望能幫助到一些人。雖然我知道我部落格寫的很爛···=_=求不扔臭雞蛋。如有更好的辦法解決,歡迎一起溝通討論,求大神們照看。