PopupWindow相关问题记录

PopupWindow相关问题记录

Android关于弹窗的实现大体有两种方式实现:AlertDialog和PopupWindow,固然还有使用Activity并配合Dialog主题实现弹窗的;

PopupWindow和AlertDialog二者的最主要的区别就是显示位置问题:
位置是否固定,AlertDialog显示位置相对是固定的,直接显示在Window的中间位置,而PopupWindwo则能够在Window的任意位置显示;

重要点记录

  • PopupWindow.mFocusable变量,做用是设置PopupWindow是否能够接受焦点事件,要设置为true后(经过PopupWindow.setFocusable(true)或PopupWindow的含有三个参数的构造函数,最后一个参数表明该属性),点击PopupWindow外部会消失,Back键也会消失,该值默认为false,若为false,这两个事件都不会起做用;html

  • PopupWidow.setTouchable(true);做用时设置PopupWindow可接受触摸事件,设置这个,点击外部区域不会消失,并且点击Back键也不消失,该值默认为true,因此不用显示设置;git

  • PopupWindow.setOutsideTouchable(true);做用是设置可接受外部区域的触摸事件,默认为false,设置为true后,可接受外部区域点击事件,点击外部区域会消失,可是点击Back键仍是不消失;github

  • PopupWindow.setBackgroundDrawable(new ColorDrawable());做用是设置PopupWindow的背景,若是不设置背景,有些版本就会出现一个问题:不管点击外部区域仍是Back键都没法dismiss弹框;
  • PopupWindow.showAsDropDown()方法是设置PopupWindow显示在某个控件之下,能够设置左右偏移量,至关于下拉弹框;ide

  • PopupWindow.showAtLocation()方法能够指定PopupWindow在Window上的任意位置,注意:第一个参数不是anchor View,而是为了从父视图来获取getWindowToken()标记的,获取一个建立新Window的Window Token值(令牌),第二个参数是经过Gravity控制PopupWindow弹出的大体位置,后面两个参数是弹出位置在x/y方向上的偏移量;函数

  • 建立PopupWindow的时候指定宽高值为contentView的宽高值时,showAsDropDown()方法可以自适应,若是设置为wrap_content,showAsDropDown()方法会认为下面的空间一直很充足,这样就不会自适应,可能会被挡住,因此:若是PopupWindow里面有ListView,ScrollView时,必定要动态设置PopupWindow的大小;动画

PopupWindow.showAtLocation(View parent,int gravity,int x,int y)方法解析:

第一个参数上面已经说了,不是anchor View,只是经过该View获取建立新Window的Window Token(看源码),第二个参数的做用是设置相对于Window的位置,如Gravity.TOP.Gravity.START等,注意,若是设置了后面两个位置精确值,第二个参数就没有效果了,能够设置为Gravity.NO_GRAVITY了;code

PopupWindow.showAsDropDown(View anchor,int xOff,int yOff,int gravity)方法解析:

主要是第四个参数,第四个参数的做用是 @param gravity Alignment of the popup relative to the anchor,相对于anchor View(锚)的对齐方式;htm

若是单独设置第二,三个参数,那么这两个值表明的偏移量是没有效果的,只有同时设置后三个参数,偏移量下x/y值才会起做用;blog

建立PopupWindow时候指定高宽时showAsDropDown可以自适应,若是设置为wrap_content,showAsDropDown会认为下面空间一直很充足,注意:若是PopupWindow里面有ListView,ScrollView时,必定要动态设置PopupWindow的大小事件

PopupWindow弹出的动画效果,默认是直接弹出和消失的

经过PopupWindow.setAnimationStyle()方法设置动画弹出和消失的效果;

直接参考这里 Android PopupWindow使用方法小结 - 式 - 博客园

总体参考自该Demo SmartPopupWindow

相关文章
相关标签/搜索