关于的DialogFragment特殊用法
2015-11-18 13:38
302 查看
1.关于生命周期:
[b]创建view可以通过两个途径,一是fragment中的onCreateView(),二是DialogFragment中的onCreateDialog()。前者适合对自定义的layout进行设置,具有更大的灵活性,而后者适合对简单dialog进行处理,可以利用Dialog.Builder直接返回Dialog对象,从生命周期的顺序而言,先执行onCreateDialog(),后执行oonCreateView(),我们不应同时使用两者。
[/b]
[b] DialogFragment没有类似于popupwindow/diaolog那样的onDismissListener 监听方法,我们可以利用其生命周期方法实现对其dismiss的监听。
[/b]
[b]2.特殊设置:[/b]
[b] getDialog().requestWindowFeature(Window.FEATURE_NO_TITLE);//去掉标题
getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));//设置背景透明[/b]
[b]3.改变DialogFragment的显示位置:[/b]
[b] 正常情况下都是默认居中,我们可以先获取的window,然后设置位置,代码如下:[/b]
[b] @Override
public void onStart() {
super.onStart();
final DisplayMetrics dm = new DisplayMetrics();
getActivity().getWindowManager().getDefaultDisplay().getMetrics(dm);
final WindowManager.LayoutParams layoutParams = getDialog().getWindow().getAttributes();
layoutParams.width = dm.widthPixels/2;//宽占屏幕一半
layoutParams.height = dm.heightPixels/2;//高占屏幕一半
layoutParams.gravity = Gravity.TOP;
layoutParams.y = DisplayUtils.dp2px(getActivity(), 48);//距离顶部有48dp的距离
getDialog().getWindow().setAttributes(layoutParams);
}
[/b]
[b]创建view可以通过两个途径,一是fragment中的onCreateView(),二是DialogFragment中的onCreateDialog()。前者适合对自定义的layout进行设置,具有更大的灵活性,而后者适合对简单dialog进行处理,可以利用Dialog.Builder直接返回Dialog对象,从生命周期的顺序而言,先执行onCreateDialog(),后执行oonCreateView(),我们不应同时使用两者。
[/b]
[b] DialogFragment没有类似于popupwindow/diaolog那样的onDismissListener 监听方法,我们可以利用其生命周期方法实现对其dismiss的监听。
[/b]
[b]2.特殊设置:[/b]
[b] getDialog().requestWindowFeature(Window.FEATURE_NO_TITLE);//去掉标题
getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));//设置背景透明[/b]
[b]3.改变DialogFragment的显示位置:[/b]
[b] 正常情况下都是默认居中,我们可以先获取的window,然后设置位置,代码如下:[/b]
[b] @Override
public void onStart() {
super.onStart();
final DisplayMetrics dm = new DisplayMetrics();
getActivity().getWindowManager().getDefaultDisplay().getMetrics(dm);
final WindowManager.LayoutParams layoutParams = getDialog().getWindow().getAttributes();
layoutParams.width = dm.widthPixels/2;//宽占屏幕一半
layoutParams.height = dm.heightPixels/2;//高占屏幕一半
layoutParams.gravity = Gravity.TOP;
layoutParams.y = DisplayUtils.dp2px(getActivity(), 48);//距离顶部有48dp的距离
getDialog().getWindow().setAttributes(layoutParams);
}
[/b]
相关文章推荐
- Linux进程调度
- MySQL模糊查询:LIKE模式和REGEXP模式
- 【JSP开发】有关session的登录注销的一个小例子
- SQL Server游标的使用
- ArcGIS教程:了解路径距离分析(一)
- linux shell 命令获取字符串/文件的MD5值
- 登录注册页面的
- CentOs6.5安装使用数据恢复软件extundelete
- z10刷机
- linux中环境变量的设置
- JAVA--HashCode 基础(判断对象是否相等)
- hdoj1698Just a Hook【线段树区间修改+区间求和】
- 第十周练习 1003 素数判定
- HI3518EV100 HZ=100
- C语言中产生随机数
- [LeetCode]Add Binary&Climbing Stairs&Remove Duplicates from Sorted List
- android之Service介绍之三 AIDL与传递对象
- 线程
- 十进制小数转化为二进制小数
- Choregographer工作原理分析