美文网首页
组件——DialogFragment

组件——DialogFragment

作者: 四喜汤圆 | 来源:发表于2019-07-30 00:34 被阅读0次

本篇是对参考文献的学习笔记。感谢作者。

一、作用

Google 官方推荐使用DialogFragment来代替Dialog,因为它有更好的可复用性

二、概念——创建 DialogFragment 的方法

1. 复写onCreateDialog()

用于替代传统的 Dialog,UI 简单,功能单一。

为简单地替代传统 Dialog 提供了非常快捷的创建方式。

2. 复写onCreateView()

用于创建复杂内容弹窗或全屏显示效果,UI 复杂,功能复杂,一般有网络请求等异步操作。

该方法在创建 Dialog 时默认使用了自定义 View,更便于实现复杂布局。

三、使用

1. 复写onCreateDialog()

(1)创建类继承DialogFragment,并复写方法

  • 创建一个 Dialog 并返回它
public class DialogFrg1 extends DialogFragment {
    @NonNull
    @Override
    public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
        // 创建一个 Dialog 并返回它
        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
        builder.setTitle("title")
            .setMessage("message")
            .setPositiveButton("确定", null)
            .setNegativeButton("取消", null);
        // 不可在此处使用show()方法
        //        builder.show();
        return builder.create();
    }
}
  • 使用自定义布局创建一个 Dialog 并返回它
public class DialogFrag2 extends DialogFragment {
    @NonNull
    @Override
    public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
        // 加载自定义布局
        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
        LayoutInflater inflater = getActivity().getLayoutInflater();
        View view = inflater.inflate(R.layout.activity_animator, null);
        builder.setView(view);
        return builder.create();
    }
}

(2)

2. 复写onCreateView()

该方法和使用 Fragment 差不多

(1)创建类继承DialogFragment,并复写方法

public class DialogFrag3 extends DialogFragment {
    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        // 加载布局:第3个参数要设置成false
        View view = inflater.inflate(R.layout.activity_animator, container, false);
        return view;
    }

    @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // 设置主题调用setStyle()
        setStyle(DialogFragment.STYLE_NO_TITLE, R.style.CustomDialog);
    }
}

四、注意

1. 处理屏幕翻转

如果使用传统的 Dialog 需要我们手动处理屏幕翻转情况,DialogFragment 不需要我们做任何处理,FragmentManager 会自动管理 DialogFragment 的生命周期。

2. 设置无标题栏

3. 设置全屏

参考文献

Android 必知必会 - DialogFragment 使用总结
Android 官方推荐 : DialogFragment 创建对话框

相关文章

网友评论

      本文标题:组件——DialogFragment

      本文链接:https://www.haomeiwen.com/subject/syuwrctx.html