PopupWindow 学习笔记

今天学习了PopupWindow,正好做个笔记记录一下,以便查阅。

一、Android 中的弹框 分为两种AlertDialog和PopupWindow

1、AlertDialog 弹框位置是固定的,并且是非阻塞性的。弹窗显示时,当前线程不会阻塞。
2、PopupWindow
弹框的位置可是任意指定,并且会阻塞线程

二 PopupWindow

使用PopupWindow分为两个步骤:

1. 初始化PopupWindow

      popupWindow = new PopupWindow(this);
//            popupWindow.setWidth(ViewGroup.LayoutParams.MATCH_PARENT);
//            popupWindow.setHeight(ViewGroup.LayoutParams.MATCH_PARENT);
            popupWindow.setWidth(100*5);
            popupWindow.setHeight(400);
            View inlatView = LayoutInflater.from(this).inflate(R.layout.include_popupview,null);
            popupWindow.setContentView(inlatView);
            popupWindow.setBackgroundDrawable(new ColorDrawable(0x00000000));
            popupWindow.setOutsideTouchable(false);
            popupWindow.setFocusable(true);
  • 其中 popupWindow.setWidth()和popWindow.setHeight()指定popupWindow显示的尺寸。既可以是具体的尺寸,也可以是WRAP_CONTENT 和MATH_CONTENT
  • popupWindow.setBackgroundDrawable(new ColorDrawable(0x00000000)); 设置popupView的背景颜色
  • PopupView中如何有EditView,必须设置popupWindow.setFocusable(true);

2. 显示PopupWindow有两种显示方式:

(1)相对于某个控件(以下拉组件的形式)显示
  • showAsDropDown(View anchor):相对某个控件的位置(正左下方),无偏移

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

  • showAsDropDown(View anchor, int xoff, int yoff, int gravity) :相对于某个控件anchor以下拉菜单方式显示,有偏移 xoff、yoff,可以指定gravity

//显示在view控件的正左上方

 popupWindow.showAsDropDown(view,0,0, Gravity.TOP);

//显示在view控件的正左下方

 popupWindow.showAsDropDown(view,100,100, Gravity.BOTTOM);
  • (2)相对于父控件的位置显示(可以指定gravity ,如Gravity.CENTER 在父控件中心显示,下方Gravity.BOTTOM 在父控件下方显示),可以有偏移 也可以无偏移
     popupWindow.showAtLocation(view, Gravity.CENTER_VERTICAL|Gravity.CENTER_HORIZONTAL,300,300);

可以指定popupWindow的进入进出的动画

 popupWindow.setAnimationStyle(R.style.AnimationFade);//指定进出动画
 popupWindow.showAtLocation(view, Gravity.CENTER_VERTICAL|Gravity.CENTER_HORIZONTAL,300,300);

in_lefttoright.xml



    

out_righttoleft.xml



    

style.xml


    

你可能感兴趣的:(PopupWindow 学习笔记)