PopupWindow官方文档
关联文章
http://www.jianshu.com/p/825d1cc9fa79#
http://www.jianshu.com/p/6db4fae05257
安卓弹框:AlertDialog 和PopupWindow
AlertDialog 的位置固定,PopupWindow 的位置是自定义的
AlertDialog 是非阻塞线程的,而PopupWindow 是阻塞线程的,
Google官方文档对PopupWindow的描述
"A popup window that can be used to display an arbitrary view. The popupwindow is a floating container that appears on top of the current activity."
PopupWindow是一个以弹窗方式呈现的控件,可以用来显示任意视图,而且会浮动在当前activity顶部。因此我们可以通过PopupWindow实现各种各样的弹窗效果,进行信息的展示或者是UI交互,由于PopupWindow自定义布局比较方便,而且在显示位置比较自由不受限制,因此受到众多开发者的青睐
PopupWindow的使用
其实PopupWindow的使用非常简单,总的来说分为两步:
1、调用PopupWindow的构造器创建PopupWindow对象,并完成一些初始化设置。
2、调用PopupWindow的showAsDropDown(View view)将PopupWindow作为View组件的下拉组件显示出来;或调用PopupWindow的showAtLocation()方法将PopupWindow在指定位置显示出来。
注意 在使用PopupWindow的时候设置焦点,再设置一个背景
popupWindow.setOutsideTouchable(false);
popupWindow.setFocusable(true);````
![PopupWindow](https://img.haomeiwen.com/i1767630/a2822ea705b085e9.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
伪代码
private PopupWindow mCustomPopup;
private void initPopupWindow() {
View popup = LayoutInflater.from(this).inflate(R.layout.popup_custom, null);
mCustomPopup = new PopupWindow(popup,
ViewPager.LayoutParams.WRAP_CONTENT, ViewPager.LayoutParams.WRAP_CONTENT, true);
if (Build.VERSION.SDK_INT >= 23) {
mCustomPopup.setElevation(8f);
} else {
mCustomPopup.setBackgroundDrawable(new ColorDrawable(0x00000000));
}
mCustomPopup.setOutsideTouchable(true);
mCustomPopup.showAsDropDown(mBtn, 0, 0);
onPopupWindowClick(popup);
}
private void onPopupWindowClick(View popup) {
popup.findViewById(R.id.tv_item_1).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//do something
mCustomPopup.dismiss();
}
});
}
网友评论