網上找了一下,沒找到。
android 現成的 listpopupwindow 又不能滿足需求。
關鍵檔案、示例**及使用方法等我都放到 github 上了。
這篇文章就不展開說明了。
這篇文章重點說明下怎麼把這個樣式給擼出來的。
說明一些關鍵點。
讓大家知其然,更加知其所以然。
**傳送門
popupwindow 預設寬高設定
我們知道,建立 popupwindow 時可以指定顯示的寬度和高度。
這邊說下**裡面預設的寬高是如何設定的。
預設寬度=裝置的寬度/3。
預設高度的設定就比較麻煩一點。
因為高度如果設定過少,可能顯示的列表 item 數目就會比較少。
如果設定過大,可能顯示列表會撐滿整個螢幕。
基於此,這邊**設定的預設高度是動態變化的。
變化演算法如下:
最大預設高度=裝置的高度/2。至於item高度如何計算,示例**裡面有,這邊就不贅餘闡釋了。列表高度=item高度*item數目。
如果列表高度《最大預設高度,預設高度=列表高度。
如果列表高度》最大預設高度,預設高度=最大預設高度。
popupwindow 顯示位置確定
在說明顯示位置之前,我們先來簡單說下 android 的座標系。
上面的簡單畫了一下,主要是說明
x軸方向,往右邊x值變大。
y軸方向,往下面y值變大。
這個對於後面顯示位置的計算有用。
接下來我們說下顯示位置的,既然是乙個位置,那麼就會有兩個維度值。
x軸(水平方向)
y軸(豎直方向)
除了維度值,還有乙個基準點,這裡的基準點就是列表的左上角。
為了說明該 popupwindow 適應各個位置,所以效果圖裡面有三個按鈕,分別位於左下角,中間,右上角。
x座標位置確定
由上圖我們可以得出結論。
當顯示的view在左邊時,顯示的x座標=view的中心點x座標。y座標位置確定當顯示的view在右邊時,顯示的x座標=view的中心點x座標-popupwindow寬度。
由上圖我們可以得出結論。
當顯示的view在上邊時,顯示的y座標=view的中心點y座標。當顯示的view在下邊時,顯示的y座標=view的中心點y座標-popupwindow高度。
Android仿微信聊天介面
專案已經傳到了github 同樣我先說下思路 1.定義訊息型別需要將所有的訊息字段定義出來,那麼需要哪些欄位了 如上圖所示,這裡就不解釋了 3,如何布局?private void setimagelayout final imageview img,string url else img.setla...
關於微信聊天介面更換背景
關於su ceview豎屏問題 小公尺4手機測試,camera.setdisplayorientation 90 可以實現 哈哈,不動了吧。但是頂部被覆蓋了 因為是整個window的背景的原因 那咋辦呢。還是兩層布局,為啥背景圖被壓縮了?我也不知道,可不可以讓背景圖不被壓縮,可以!套乙個scroll...
用html模擬的微信聊天介面
charset utf 8 name aplus terminal content 1 name content name content yes name content black translucent name viewport content width device width,init...