DialogFragment使用方法

1、实现普通的dialog效果

新建一个类 继承AppCompatDialogFragment 并实现onCreateDialog方法

public class CustomDialog extends AppCompatDialogFragment {
   @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {

        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
        builder.setTitle("提示")
                .setMessage("新建一个类 继承AppCompatDialogFragment 并实现onCreateDialog方法")
                .setPositiveButton("确定", null)
                .setNegativeButton("取消", null);
        return builder.create();
    }
}

使用方法

 CustomDialog dialog=new CustomDialog();
        dialog.show(getSupportFragmentManager(),"custom");//custom 设置一个tag

2、实现自定义的dialog

实现方法换了onCreateView

public class CustomDialog extends AppCompatDialogFragment {
    @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setStyle(DialogFragment.STYLE_NO_TITLE,R.style.dialogFull);//全屏显示
    }

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        return inflater.inflate(R.layout.custom_dialog, null);//任意添加一个测试布局即可
    }

}

全屏显示

3、顶部弹窗效果

public class TopDialog extends AppCompatDialogFragment {

    @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setStyle(DialogFragment.STYLE_NO_TITLE, R.style.dialogFull);//全屏dialog
    }

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

        return inflater.inflate(R.layout.top_dialog, container);
    }

    @Override
    public void onStart() {
        super.onStart();
        Window window = getDialog().getWindow();
        WindowManager.LayoutParams windowParams = window.getAttributes();
        windowParams.dimAmount = 0.0f;//Dialog外边框透明
        window.setLayout(windowParams.MATCH_PARENT, windowParams.WRAP_CONTENT); //高度自适应,宽度全屏
        windowParams.gravity = Gravity.TOP; //在顶部显示
        windowParams.windowAnimations = R.style.top_dialog_anim;
        window.setAttributes(windowParams);

    }
}
top_dialog_in


    
top_dialog_out



    

取消弹窗

 getDialog().setCanceledOnTouchOutside(true);

 

你可能感兴趣的:(DialogFragment使用方法)