美文网首页
PopupWindow

PopupWindow

作者: 贝贝ovo | 来源:发表于2017-04-19 23:58 被阅读42次

    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();
                }
            });
        }

    相关文章

      网友评论

          本文标题:PopupWindow

          本文链接:https://www.haomeiwen.com/subject/ifkkzttx.html