关于对话框和popupwindow的设置指定大小和位置的小结
来源:互联网 发布:中国跳水最厉害的知乎 编辑:程序博客网 时间:2024/06/03 12:41
最近研究了下dialog'和popupwindow,它们都能在当前界面弹出一个窗口,外观上的区别是一dialog弹出后背景会失去焦点(背景变暗),popupwindow则默认不会。
使用的时候也有些区别。
一 dialog
1 常用的dialog 应该是v7包下的alertdialog 了,通过内部类builder设置创建一个对话框实例。
默认的对话框有如下特点:
1 width 大小和屏幕宽度差不多
2 高度 基本上是包裹内容的
3 显示在屏幕中间 弹出后获得焦点 北京变灰
如果想要定义对话框的大小则需要通过window 的属性来设置
2 其他的dialog 在创建的时候会默认的添加一个头部视图,没有内容则会空出一片地方,alertdialog则不会。
WindowManager.LayoutParams lp = mDialog.getWindow().getAttributes();// lp.alpha = 0.3f;//透明度//lp.width = 300;//宽高,可以指定具体的值,也可以根据屏幕的宽高设定百分比//lp.height = 200;//mDialog.getWindow().setAttributes(lp);//按照屏幕百分比来设置大小Display display = getWindowManager().getDefaultDisplay();// int width = (int) (display.getWidth() * 0.4);// int height = (int) (display.getHeight() * 0.2);// lp.height = height;// lp.width = width;// mDialog.getWindow().setAttributes(lp);
//也是按照屏幕百分比来设置大小DisplayMetrics dm = new DisplayMetrics();display.getMetrics(dm);lp.height = (int) (dm.heightPixels * 0.3);lp.width = (int) (dm.widthPixels * 0.5);mDialog.getWindow().setAttributes(l)
/如果想要修改对话框的宽高,需要通过设置对应的window 的属性//因为window属性的修改是通过 设置callback的接口实现的,实现里有一个view的判空操作,//该view会在show()方法里赋值,dimiss()中置空,所以需要在对话框show()之后设定window的属性
二 popupwindow
创建它的时候可以直接指定它的宽高,显示的内容,是否获取焦点等。弹出的时候可以通过重载的方法指定显示在哪里。
//获取布局填充器LayoutInflater inflater = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);View view = inflater.inflate(R.layout.popwin, null);//指定window的显示内容和 window的宽高,是否获取焦点等,选择合适的重载方法mWindow = new PopupWindow(view, WindowManager.LayoutParams.WRAP_CONTENT, WindowManager.LayoutParams.WRAP_CONTENT);// mWindow.setOutsideTouchable(true);//默认是falser// mWindow.setFocusable(true);//默认是false//如果想使用popupwindow实现dialog的效果,可以通过window参数设置实现//通常不使用此方法改变宽高,可以改变透明度和背景颜色WindowManager.LayoutParams lp = getWindow().getAttributes();lp.alpha = 0.3f;getWindow().setBackgroundDrawable(new ColorDrawable(Color.GRAY));getWindow().setAttributes(lp);//popupwind 使用的window不是新创建的,是和对应的上下文的同一个窗口,不需要像dialog那样show之后再设置三 小结1 如果想改变对话框的大小需要在对话框show()之后,使用window的setattribtes()方法,它会触发监听从而改变。2 popupwindow 想实现dialog的效果可以在设置它的时候直接设置
0 0
- 关于对话框和popupwindow的设置指定大小和位置的小结
- Android 创建指定位置和大小的PopupWindow,带进入和退出动画
- 设置对话框大小和位置
- MFC 设置弹出对话框的位置、大小和风格 SetWindowPos
- PopupWindow 显示位置 大小的设置
- popupWindow 设置指定的出现位置
- VC对话框大小和位置设置
- 设置自定义Dialog的大小和位置
- 对话框消除黑色背景、边框,设置对话框大小和位置
- 对话框上的控件的大小和位置随着对话框的大小的改变而变化
- 关于popupWindow的位置
- 对话框程序自动调整控件大小和位置的宏
- VC改变控件或对话框的大小和位置方法
- Android PopupWindow显示位置和显示大小
- Android PopupWindow显示位置和显示大小
- popupWindow定时消失和指定位置弹出
- PopupWindow和dialog的显示位置
- jqgrid 设置 编辑窗体 的位置和大小的方法
- augmented reality(AR)入门实例
- JavaScript——split函数的应用
- linux内核目录树
- vba获取单元的背景颜色
- Android:Looper, Handler, And HandlerThread(二)
- 关于对话框和popupwindow的设置指定大小和位置的小结
- kafka生产者示例(kafka-python producer example)
- 求100以内的勾股数
- UI autoMonkey
- 蓝桥杯第七届 有奖猜谜
- 致25岁还一无是处的你!
- g++编译报错原因分析 makefile : *** commands commence before first target. stop.
- 单例模式
- zstu 4243牛吃草(2016年新生赛暨全国新生邀请赛)