PopupWindow

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](http://upload-images.jianshu.io/upload_images/1767630-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();
            }
        });
    }

你可能感兴趣的:(PopupWindow)