PopupWindow介绍

  • Android的对话框有两种:PopupWindow AlertDialog.他们的不同点在于AlertDialog的位置固定,而PopupWindow的位置可以随意

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

    具体如下:

mPopupWindow.showAsDropDown(View anchor);  相对于某个控件的位置(正下方),无偏移
    mPopupWindow.showAsDropDown(View anchor,int oxoff,int yoff);  相对于某个控件的位置,有偏移
    mPopupWindow.showAtLocation(View parent,int gravity,int x,int y);  相对于父控件的位置,例如正中央Gravity.CENTER,下方Gravity.BOTTOMdeng )

//创建一个PopupWindow

   //参数1、contentView指定PopupWindow的内容
    //参数2、width
    //参数3、height
PopupWindow mPopupWindow = new PopupWindow(textView, ViewGroup.LayoutParams.MATCH_PARENT,ViewGroup.LayoutParams.WRAP_CONTENT);
                 //设置PopupWindow的相关属性
                 //设置背景
                            mPopupWindow.setBackgroundDrawable(getResources().getDrawable(R.mipmap.ic_launcher));
                            mPopupWindow.getBackground().setAlpha(100); //设置透明度
                            //mPopupWindow.setAnimationStyle(); //设置动画效果
                            
           //设置点击窗口外边窗口消失
           mPopupWindow.setOutsideTouchable(true);
           mPopupWindow.setFocusable(true);
           mPopupWindow.setTouchable(true);
        //防止虚拟软键盘呗弹出菜单遮住
        mPopupWindow.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_NOTHING);



        //显示弹窗
        //相对于某个控件的位置(正下方)  无偏移
        mPopupWindow.showAsDropDown(v);
        //相对于某个控件的位置(正左下方)  有偏移
        mPopupWindow.showAsDropDown(v,50,50);  //x.y方向各偏移50
        //相对于父控件的位置  无偏移
        mPopupWindow.showAtLocation(v, Gravity.CENTER,0,0);
        //相对于父控件的位置,有偏移
        mPopupWindow.showAtLocation(v,Gravity.BOTTOM,0,50);
        
        //关闭弹窗
        mPopupWindow.dismiss();

你可能感兴趣的:(PopupWindow介绍)