PopupWindow用法
来源:互联网 发布:淘宝二手闲鱼网站 编辑:程序博客网 时间:2024/05/17 01:54
使用PopupWindow可实现弹出窗口效果,,其实和AlertDialog一样,也是一种对话框,两者也经常混用,但是也各有特点。下面就看看使用方法。
首先初始化一个PopupWindow,指定窗口大小参数。
PopupWindow mPop = new PopupWindow(getLayoutInflater().inflate(R.layout.window, null),LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
也可以分开写:
LayoutInflater mLayoutInflater = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);
//自定义布局
ViewGroup menuView = (ViewGroup) mLayoutInflater.inflate( R.layout.window, null, true);PopupWindow mPop = new PopupWindow(menuView, LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, true);当然也可以手动设置PopupWindow大小。mPop.setContentView(menuView );//设置包含视图mPop.setWidth(int )mPop.setHeight(int )//设置弹出框大小
设置进场动画:
mPop.setAnimationStyle(R.style.AnimationPreview);//设置动画样式
mPop.setOutsideTouchable(true);//这里设置显示PopuWindow之后在外面点击是否有效。如果为false的话,那么点击PopuWindow外面并不会关闭PopuWindow。当然这里很明显只能在Touchable下才能使用。
当有mPop.setFocusable(false);的时候,说明PopuWindow不能获得焦点,即使设置设置了背景不为空也不能点击外面消失,只能由dismiss()消失,但是外面的View的事件还是可以触发,back键也可以顺利dismiss掉。当设置为popuWindow.setFocusable(true);的时候,加上下面两行设置背景代码,点击外面和Back键才会消失。
mPop.setFocusable(true);
需要顺利让PopUpWindow dimiss(即点击PopuWindow之外的地方此或者back键PopuWindow会消失);PopUpWindow的背景不能为空。必须在popuWindow.showAsDropDown(v);或者其它的显示PopuWindow方法之前设置它的背景不为空:
mPop.setBackgroundDrawable(new ColorDrawable(0));
mPop.showAsDropDown(anchor, 0, 0);//设置显示PopupWindow的位置位于View的左下方,x,y表示坐标偏移量
mPop.showAtLocation(findViewById(R.id.parent), Gravity.LEFT, 0, -90);(以某个View为参考),表示弹出窗口以parent组件为参考,位于左侧,偏移-90。
mPop.setOnDismissListenerd(new PopupWindow.OnDismissListener(){})//设置窗口消失事件
注:window.xml为布局文件
总结:
1、为PopupWindow的view布局,通过LayoutInflator获取布局的view.如:
LayoutInflater inflater =(LayoutInflater)
this.anchor.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View textEntryView = inflater.inflate(R.layout.paopao_alert_dialog, null);
2、显示位置,可以有很多方式设置显示方式
pop.showAtLocation(findViewById(R.id.ll2), Gravity.LEFT, 0, -90);
或者
pop.showAsDropDown(View anchor, int xoff, int yoff)
3、进出场动画
pop.setAnimationStyle(R.style.PopupAnimation);
4、点击PopupWindow区域外部,PopupWindow消失
this.window = new PopupWindow(anchor.getContext());this.window.setTouchInterceptor(new OnTouchListener() {@Overridepublic boolean onTouch(View v, MotionEvent event) {if(event.getAction() ==MotionEvent.ACTION_OUTSIDE) { BetterPopupWindow.this.window.dismiss();return true;}return false;}});
- PopupWindow用法
- PopupWindow 用法
- PopupWindow用法
- popupwindow用法
- PopupWindow用法
- PopupWindow用法
- PopupWindow用法
- PopupWindow用法
- PopupWindow用法
- PopupWindow用法
- PopupWindow用法
- Android popupWindow 用法
- android PopupWindow的用法
- android—PopupWindow用法
- 【转】PopupWindow用法
- popupWindow简单用法实例
- popupwindow的用法
- PopupWindow的用法
- 从今天开始记录!
- 关于Fragment实现tab标签效果的提示
- u-boot 启动过程 (基于S3C2410) 和uImage zImage 启动分析
- 游戏外挂基本原理及实现
- socket
- PopupWindow用法
- 在Windows下用eclipse写MapReduce程序
- 单例设计模式的五种写法
- 外挂编写完全攻略
- 诸葛沙龙|“互联网+”时代的移动应用开发新模式
- Charles_N:HTTP请求响应监听工具
- addEventListener和attachEvent的区别
- dp dpi px
- dnf辅助外挂C++源代码