關於Android的PopupWindon

這篇文章主要介紹了PopupWindow在控件的各個方向上的顯示(上、下、左、右),主要用到PopupWindow的showAtLocation()方法。

①.在控件上方、下方、左方、右方

佈局中就放一個簡單的按鈕控件,居中,屏幕中間

//初始化控件
private void init_Views() {
button = (Button) findViewById(R.id. popup );
button .setOnClickListener( new View.OnClickListener() {
@Override
public void onClick(View v) {
//點擊控件彈出窗口
popupWindwShowing(v);
}
});
}


//彈出窗口
private void popupWindwShowing(View v) {

if ( popupWindow == null ){

//初始化佈局填充器
LayoutInflater layoutInflater = (LayoutInflater) getSystemService(Context. LAYOUT_INFLATER_SERVICE );
//彈窗的佈局
view = layoutInflater.inflate(R.layout. popupwindow , null );
//popup初始化 參數:pop顯示的view,pop的寬度,pop的高度
popupWindow = new PopupWindow( view , 300 , 330 );
}

//使其聚集
popupWindow .setFocusable( true );
// 設置允許點擊外部消失
popupWindow .setOutsideTouchable( true );
// 這個是爲了點擊「返回Back」也能使其消失,並且並不會影響你的背景
popupWindow .setBackgroundDrawable( new BitmapDrawable());

//獲得v在屏幕中的x 和 y座標,記錄在數組中
int [] location = new int [ 2 ];
v.getLocationOnScreen(location);

WindowManager windowManager = (WindowManager) getSystemService(Context. WINDOW_SERVICE );

//座標計算
int pox = -( popupWindow .getWidth()/ 2 - button .getWidth()/ 2 );

//正下方 參數:點擊的控件,偏離控件左下角點
// popupWindow.showAsDropDown(v,pox,0);

//上方
// popupWindow.showAtLocation(v, Gravity.NO_GRAVITY, location[0], location[1]-popupWindow.getHeight());

//左邊
// popupWindow.showAtLocation(v, Gravity.NO_GRAVITY, location[0]-popupWindow.getWidth(), location[1]);

//右邊
popupWindow .showAtLocation(v, Gravity. NO_GRAVITY , location[ 0 ]+v.getWidth(), location[ 1 ]);
}

效果圖:
正下方:

上方:

左方:

右方: