解决Android中自定义DialogFragment解决宽度和高度问题
关于详解Android应用中DialogFragment的基本用法,大家可以参考下。
1、概述
DialogFragment在android3.0时被引入。是一种特殊的Fragment,用于在Activity的内容之上展示一个模态的对话框。典型的用于:展示警告框,输入框,确认框等等。
在DialogFragment产生之前,我们创建对话框:一般采用AlertDialog和Dialog。注:官方不推荐直接使用Dialog创建对话框。
2、好处与用法
使用DialogFragment来管理对话框,当旋转屏幕和按下后退键时可以更好的管理其声明周期,它和Fragment有着基本一致的声明周期。且DialogFragment也允许开发者把Dialog作为内嵌的组件进行重用,类似Fragment(可以在大屏幕和小屏幕显示出不同的效果)。上面会通过例子展示这些好处~
使用DialogFragment至少需要实现onCreateView或者onCreateDIalog方法。onCreateView即使用定义的xml布局文件展示Dialog。onCreateDialog即利用AlertDialog或者Dialog创建出Dialog。
下面通过示例代码给大家介绍下Android中自定义DialogFragment解决宽度和高度问题
Android中自定义DialogFragment解决宽度和高度问题但是我们很多时候想把DialogFragment的高度固定,那么我们需要设置DialogFragment的高度,在Fragment的onResume()声明周期方法中设置window的宽高即可。
@Override
publicvoidonResume(){
super.onResume();
getDialog().getWindow().setLayout(DeviceUtil.getDeviceWidth(),ResUtils.dp2px(295));
}
设置DialogFrament从底部弹出,并且弹出动画为向上滑出,消失动画为向下滑出
WindowManager.LayoutParamsparams=getDialog().getWindow() .getAttributes(); params.gravity=Gravity.BOTTOM|Gravity.CENTER_HORIZONTAL; params.windowAnimations=R.style.bottomSheet_animation; getDialog().getWindow().setAttributes(params);
完整的代码如下:
@Nullable
@Override
publicViewonCreateView(LayoutInflaterinflater,@NullableViewGroupcontainer,@NullableBundlesavedInstanceState){
WindowManager.LayoutParamsparams=getDialog().getWindow()
.getAttributes();
params.gravity=Gravity.BOTTOM|Gravity.CENTER_HORIZONTAL;
params.windowAnimations=R.style.bottomSheet_animation;
getDialog().getWindow().setAttributes(params);
getDialog().getWindow().requestFeature(Window.FEATURE_NO_TITLE);
getDialog().setCanceledOnTouchOutside(true);
getDialog().getWindow().setBackgroundDrawable(newColorDrawable(Color.TRANSPARENT));
mContentView=inflater.inflate(R.layout.fragment_create_quick,container,false);
returnmContentView;
}
@Override
publicvoidonResume(){
super.onResume();
getDialog().getWindow().setLayout(DeviceUtil.getDeviceWidth(),HlyUtils.dp2px(380));
}
@anim/slide_in_bottom
@anim/slide_out_bottom
总结
以上所述是小编给大家介绍的解决Android中自定义DialogFragment解决宽度和高度问题,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!