Android Popuwindow使用

来源:互联网 发布:面具淘宝 编辑:程序博客网 时间:2024/05/01 09:22

android的popuwindow,是window系列控件中的一种,作用是用来弹出一个他弹出框,与对话框不同,因为他是用来“提醒”的,而且是悬浮在当前activity之上的

在使用上,popuwindow与dialog迥异的是:popuwindow必须设置他的长度,宽度,才可以显示出来


最简单的代码

这样我们就可以显示出来了,为了简单点,能看出来,我把在popuwindow的布局文件中,把他设置成为黑色的

效果图:

由于我曾看过一篇博客,说是显示在左下角,所以这里上三张图片

。。。不会弄图。。大家随意。看图片,看得出来,不是显示在左下角的,(设置大小为wrap——content)

popupwindow设置大小、位置设置:

个人觉得popupwindow一直放在那儿,好难看。怎么调节位置?

不着急。先设置他的大小。前面是使用layoutparams去设置,现在。我们可以使用popupwindow的一个构造方法:

//也可以直接设置大小
//        popuwindow=new PopupWindow(view,100,100);
这样简单粗暴,然后就回到设置位置上;设置parameter?
这时候看到了这么一个函数:

  public void showAsDropDown(View anchor, int xoff, int yoff) {
        showAsDropDown(anchor, xoff, yoff, DEFAULT_ANCHORED_GRAVITY);
    }

没错!就是showasdropdown这个函数,可以用来设置popupwindow的位置,
什么是xoff,标准在哪儿?测试了几次,发现:

xoff,yoff基于anchor的左下角进行偏移。

而上兼顾到上面提及的两个方面。popupwindow就可以实现了,但是,此时的它却是会一直显示着

这时候要让他消失,需要调用到dismiss函数,但是直接调用,是会直接消失。顶多让手机卡顿一下,使用者却不知道popupwindow出现过

这时,调用下view里那个按钮,给他添加下点击事件

这时候点击下确定按钮,那么他就消失了
那么怎么让我们点击外部时候。popupwindow也能消失呢?这是有人想到了popupwindow的setoutside方法,但是很遗憾

其实这个方法时设置popupWindow以外的区域可以相应触摸事件,比如我们重写了触摸事件去做一些别的操作

而且查看api,没看到明显的方法(我是没看到,有看到的麻烦指点一下)
是时候百度一波了,百度过后,发现这么一句话:

需要顺利让PopUpWindow dimiss(即点击PopuWindow之外的地方此或者back键PopuWindow会消失);PopUpWindow的背景不能为空。必须在popuWindow.showAsDropDown(v);或者其它的显示PopuWindow方法之前设置它的背景不为空

所以,代码中增添了这么几句:


这样设置过后,我们的外部点击事件就可以执行了,到最后,大家肯定都注意到了我设置的button2.外部点击按钮,测试过后,会发现不设置outside的话,点击外部点击事件的话,button的点击事件依旧会实现。若是想让他在几秒后自动消失,很抱歉,dismiss的函数类别是void的,需要用handle去设置



最后上全部代码:







希望大家能注意到,这个控件名字是popupwindow
1 0
原创粉丝点击