Android自定义dialog宽高,解决Android中自定义DialogFragment解决宽度和高度问题

本文介绍了如何在Android中使用DialogFragment定制宽度和高度,以及设置从底部弹出并带有滑动动画的效果。通过在onResume()中设置窗口尺寸,并在onCreateView()中调整布局和动画,实现了自定义DialogFragment的显示效果。

1、 概述

DialogFragment在android 3.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

public void onResume() {

super.onResume();

getDialog().getWindow().setLayout(DeviceUtil.getDeviceWidth(), ResUtils.dp2px(295));

}

设置DialogFrament 从底部弹出,并且弹出动画为向上滑出,消失动画为向下滑出

WindowManager.LayoutParams params = getDialog().getWindow()

.getAttributes();

params.gravity = Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL;

params.windowAnimations = R.style.bottomSheet_animation;

getDialog().getWindow().setAttributes(params);

完整的代码如下:

@Nullable

@Override

public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {

WindowManager.LayoutParams params = 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(new ColorDrawable(Color.TRANSPARENT));

mContentView = inflater.inflate(R.layout.fragment_create_quick, container, false);

return mContentView;

}

@Override

public void onResume() {

super.onResume();

getDialog().getWindow().setLayout(DeviceUtil.getDeviceWidth(), HlyUtils.dp2px(380));

}

@anim/slide_in_bottom

@anim/slide_out_bottom

android:shareInterpolator="false">

android:duration="300"

android:fromYDelta="100.0%p"

android:toYDelta="0.0" />

android:shareInterpolator="false">

android:duration="300"

android:fromYDelta="0%p"

android:toYDelta="100%p" />

总结

以上所述是小编给大家介绍的解决Android中自定义DialogFragment解决宽度和高度问题,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值