Android常见View之PopupWindow精解

来源:互联网 发布:eia数据对黄金的影响 编辑:程序博客网 时间:2024/05/22 15:39

当我在总结一些知识点的时候,我的心情是有些复杂。我不知道总结的这个知识点对于别人的意义有多大,还只是用于我在开发遇到困惑的时候提供参考的模块。随着开发年限的增长,阅历的增长,以及对整个互联网趋势的把握,我对程序员存在的意义以及存在的方式有了新的见解。其实,程序员磊代码,就像语文中的写作文一样,甚至要比写作文要简单的多。同样是通过一段文字或编码来实现一个功能,表达一个含义,如果我们有大量的语言、段落或框架积累,就很容易组织一篇精美的文章。所以这也是我的一个方向,我要把我所掌握的可复用的框架、View、工具类累积到一个项目中,在以后项目需要的时候,只需要取出来进行定制型填充。我甚至要完成一些在各个方面有代表意义的项目,一方面的锻炼了自己的能力,一方面是为了以后的创业做准备。后来,我会写下项目的github地址,希望遇到志同道合的人。

一、PopupWindow与AlertDialog的区别

PopupWindow与AlertDialog都是对话框,最关键的区别是AlertDialog不能指定显示位置,只能默认显示在屏幕最中间(当然也可以通过设置WindowManager参数来改变位置)。而PopupWindow是可以通过指定的锚点或父布局指定显示位置的,随便哪个位置都可以,更加灵活。

二、PopupWindow的常用方法

1.构造方法

  //方法一:  public PopupWindow (Context context)  //方法二:  public PopupWindow(View contentView)  //方法三:  public PopupWindow(View contentView, int width, int height)  //方法四:  public PopupWindow(View contentView, int width, int height, boolean focusable) 

PopupWindow有四个构造方法,方法三最常用。因为PopupWindow没有默认的布局文件,所以必须强制设置contentView设置布局。因为PopupWindow没有根布局,所以必须要设置PopupWindow的width和height,确定PopupWindow的大小。虽然在Layout布局文件中我们会设置PopupWindow的width和height,但是必须要在java文件中重写,所以Layout文件最外层的布局是不起作用的,所以要在layout文件最外层在包裹一层布局,这样才不会影响你的布局显示。

2.重要方法

//相对某个控件的位置(正左下方),无偏移  showAsDropDown(View anchor):  //相对某个控件的位置,有偏移;xoff表示x轴的偏移,正值表示向左,负值表示向右;yoff表示相对y轴的偏移,正值是向下,负值是向上;  showAsDropDown(View anchor, int xoff, int yoff):  //相对于父控件的位置(例如正中央Gravity.CENTER,下方Gravity.BOTTOM等),可以设置偏移或无偏移  showAtLocation(View parent, int gravity, int x, int y);public void dismiss()      //另外几个函数,这里不讲其意义,下篇细讲  public void setFocusable(boolean focusable)  public void setTouchable(boolean touchable)  public void setOutsideTouchable(boolean touchable)  public void setBackgroundDrawable(Drawable background)  
  1. showAsDropDown(View anchor):相对某个控件的位置(正左下方),无偏移 。这里对正在下方的概念进行解释,就是anchor控件的左下角和PopupWindow的右上角重合,但是布局空间不足的情况除外。具体请看图解。图1属于正常情况,图2属于空间不足的情况,PopupWindow便不遵循该规则,找寻合适的位置显示完整。
    这里写图片描述

  2. 列表内容

  3. 列表内容
  4. 列表内容
  5. 列表内容
  6. 列表内容
  7. 列表内容
  8. 列表内容
  9. 列表内容
0 0
原创粉丝点击