关于的DialogFragment特殊用法

本文介绍了如何使用 DialogFragment 创建对话框,包括通过 onCreateDialog 和 onCreateView 方法的不同应用场景,如何去除标题栏和设置背景透明,并提供了调整 DialogFragment 显示位置的具体实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.关于生命周期:

          创建view可以通过两个途径,一是fragment中的onCreateView(),二是DialogFragment中的onCreateDialog()。前者适合对自定义的layout进行设置,具有更大的灵活性,而后者适合对简单dialog进行处理,可以利用Dialog.Builder直接返回Dialog对象,从生命周期的顺序而言,先执行onCreateDialog(),后执行oonCreateView(),我们不应同时使用两者。

         DialogFragment没有类似于popupwindow/diaolog那样的onDismissListener 监听方法,我们可以利用其生命周期方法实现对其dismiss的监听。


2.特殊设置:

        getDialog().requestWindowFeature(Window.FEATURE_NO_TITLE);//去掉标题
        getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));//设置背景透明

3.改变DialogFragment的显示位置:

   正常情况下都是默认居中,我们可以先获取的window,然后设置位置,代码如下:

     @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);
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值