您的位置:首页 > 运维架构

popuwindow

2016-03-02 19:38 267 查看
Android的对话框有两种:PopupWindow和AlertDialog。它们的不同点在于:

AlertDialog的位置固定,而PopupWindow的位置可以随意

AlertDialog是非阻塞线程的,而PopupWindow是阻塞线程的

PopupWindow的位置按照有无偏移分,可以分为偏移和无偏移两种;按照参照物的不同,可以分为相对于某个控件(Anchor锚)和相对于父控件。具体如下

showAsDropDown(View anchor):相对某个控件的位置(正左下方),无偏移

showAsDropDown(View anchor, int xoff, int yoff):相对某个控件的位置,有偏移

showAtLocation(View parent, int gravity, int x, int y):相对于父控件的位置(例如正中央Gravity.CENTER,下方Gravity.BOTTOM等),可以设置偏移或无偏移



/**
* 初始化popWindow
* */
private void initPopWindow() {
View popView = inflater.inflate(R.layout.listview_pop, null);
popupWindow = new PopupWindow(popView, LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
popupWindow.setBackgroundDrawable(new ColorDrawable(0));
//设置popwindow出现和消失动画
popupWindow.setAnimationStyle(R.style.PopMenuAnimation);
btn_pop_close = (ImageView) popView.findViewById(R.id.btn_pop_close);
ll_pop_speech=(LinearLayout) popView.findViewById(R.id.ll_pop_speech);
ll_pop_favor=(LinearLayout) popView.findViewById(R.id.ll_pop_favor);
ll_pop_dislike=(LinearLayout) popView.findViewById(R.id.ll_pop_dislike);

btn_pop_close.setOnClickListener(new popItemOnClickListener());
ll_pop_speech.setOnClickListener(new popItemOnClickListener());
ll_pop_favor.setOnClickListener(new popItemOnClickListener());
ll_pop_dislike.setOnClickListener(new popItemOnClickListener());
}


/**
* 显示popWindow
* */
public void showPop(View parent, int x, int y,int postion) {
//设置popwindow显示位置
popupWindow.showAtLocation(parent, 0, x, y);
//获取popwindow焦点
popupWindow.setFocusable(true);
//设置popwindow如果点击外面区域,便关闭。
popupWindow.setOutsideTouchable(true);
popupWindow.update();
if (popupWindow.isShowing()) {

}

}


/**
* 每个ITEM中more按钮对应的点击动作
*
**/
public class popAction implements OnClickListener{
int position;
public popAction(int position){
this.position = position;
}
@Override
public void onClick(View v) {
int[] arrayOfInt = new int[2];
//获取点击按钮的坐标
v.getLocationOnScreen(arrayOfInt);
int x = arrayOfInt[0];
int y = arrayOfInt[1];
showPop(v, x , y, position);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: