有Dialoge样式的Fragment, 同 Fragment 有同样的生命周期
- 继承 DialogFragment 的子类
- Activity 中 DialogFragment 的子类对象调用 show (FragmentManager manager, String tag)显示
DialogFragment 的方法
- getDialog() 可获取默认的 Dialoge
- getArguments() 返回一个 Bundle 对象
- setStyle (int style,int theme)设置样式,
例: .setStyle(DialogFragment.STYLENOFRAME, 0);//去掉标题 - show (FragmentManager manager, String tag) 显示该 DialogeFragment
注意
在Activity中用 FragmentTransaction 调用add和show方法显示 DialogFragment, 则以普通Fragment的形式显示, 没有 Dialoge 效果
功能实现
Activity 传数据给 DialogFragment
1 2 3 4 5 6 7 8 9 10 |
Activity中: Bundle args = new Bundle(); args.putString("title", "Title"); dialogFragment.setArguments(args); DialogFragment 中: Bundle args = getArguments(); String title = args.getString("title"); |
改变 DialogFragment 显示的大小和位置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
@Override public void onResume() { super.onResume(); Window window = getDialog().getWindow(); WindowManager.LayoutParams lp = window.getAttributes(); lp.gravity = Gravity.RIGHT | Gravity.BOTTOM;//显示位置为右下角 lp.x=90;//设置gravity为 LEFT or START or RIGHT or END时,相对的offset lp.y=-20;//设置gravity为TOP或BOTTOM时,相对的offset lp.width = 200;//显示宽度为200 lp.height = 300; window.setAttributes(lp); // window.setLayout(200,300);//也可以直接这样指定宽高 } |
0 Comments