PopUpWindow使用详解(一)——基本使用

PopUpWindow使用详解(一)——基本使用

2023年7月15日发(作者:)

PopUpWindow使⽤详解(⼀)——基本使⽤本来想写⼀篇关于PopUpWindow的⽂章,但在学习过程中发现启舰⼤佬写的特别好。⾃认写不出这么通俗易懂的⽂章,看来⾃⼰和真正的⼤神还是有很⼤差距的。特意转载到此,以激励⾃⼰奋⼒前⾏,不忘初⼼。

相关⽂章:1、《PopUpWindow使⽤详解(⼀)——基本使⽤》2、先看⼀下我们要做的效果:

这个效果很容易理解:当点击btn时,在底部弹出PopupWindow,然后点击各个item弹出对应toast。⼀、概述1、PopupWindow与AlertDialog的区别最关键的区别是AlertDialog不能指定显⽰位置,只能默认显⽰在屏幕最中间(当然也可以通过设置WindowManager参数来改变位置)。⽽PopupWindow是可以指定显⽰位置的,随便哪个位置都可以,更加灵活。

有关Dialog的相关知识,⼤家可以参考⼤佬的系列博客:2、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最基本的三个条件是⼀定要设置的:View contentView,int width, intheight ;少任意⼀个就不可能弹出来PopupWindow

所以,如果使⽤⽅法⼀来构造PopupWindow,那完整的构造代码应该是这样的: View contentView = ().inflate(ayout, null);

PopupWindwo popWnd = PopupWindow (context);

tentView(contentView);

th(_CONTENT);

ght(_CONTENT);

有关为什么⼀定要设置width和height的原因,我们后⾯会讲,这⾥说⼀下为什么样强制设置contentView;很简单的原因是因为PopupWindow没有默认布局,它不会像AlertDialog那样只setTitle,就能弹出来⼀个框。PopupWindow是没有默认布局的,它的布局只有通过我们⾃⼰设置才⾏。由于⽅法三中,含有了这三个必备条件,不⽤单独设置contentview或者width、height,所以构造⽅法三是⽤的最多的⼀个构造⽅法。

最后,⽅法四中的focusable变量不是必须的,有关它的⽅法和意义,我们会在下⼀篇中细讲。(2)显⽰函数显⽰函数主要使⽤下⾯三个: //相对某个控件的位置(正左下⽅),⽆偏移

showAsDropDown(View anchor):

//相对某个控件的位置,有偏移;xoff表⽰x轴的偏移,正值表⽰向右,负值表⽰向左;yoff表⽰相对y轴的偏移,正值是向下,负值是向上;

showAsDropDown(View anchor, int xoff, int yoff):

//相对于⽗控件的位置(例如正中央,下⽅等),可以设置偏移或⽆偏移

showAtLocation(View parent, int gravity, int x, int y):

这⾥有两种显⽰⽅式:

1、显⽰在某个指定控件的下⽅showAsDropDown(View anchor):showAsDropDown(View anchor, int xoff, int yoff);2、指定⽗视图,显⽰在⽗控件的某个位置(,等)showAtLocation(View parent, int gravity, int x, int y);(3)、其它函数 public void dismiss()

//另外⼏个函数,这⾥不讲其意义,下篇细讲

public void setFocusable(boolean focusable)

public void setTouchable(boolean touchable)

public void setOutsideTouchable(boolean touchable)

public void setBackgroundDrawable(Drawable background)

这⼏个函数⾥,这篇只会⽤到dismiss(),⽤于不需要的时候,将窗体隐藏掉。好了,废话不多说了,我们就做⼀个上⾯的例⼦来看⼀下。⼆、简单⽰例(showAtLocation显⽰窗体)在这个例⼦中,我们实现两个功能,弹出popupWindow和Item点击响应1、主布局()从效果图中也可以看到主布局只有⼀个button,什么都没有,所以它的布局代码哪下:

android:orientation="vertical"

android:layout_width="fill_parent"

android:layout_height="fill_parent">

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信