如何在屏幕底部显示DialogFragment对话框,并且与屏幕等宽?


对话框默认是在屏幕中间的,想在底部实现对话框,并且可以适配屏幕....

Android

funik 9 years, 2 months ago

这应该就是你想实现的 位于底部、与屏幕等宽 DiaglogFragment 了。
(你问题描述里的“适应屏幕”,我理解的是“与屏幕等宽”)
图片描述

自定义一个位于屏幕底部、与屏幕等宽的DialogFragment


 public class DatePickerDialog extends DialogFragment {
  @Override
  public Dialog onCreateDialog(Bundle savedInstanceState) {
    // 使用不带theme的构造器,获得的dialog边框距离屏幕仍有几毫米的缝隙。
    // Dialog dialog = new Dialog(getActivity());
    Dialog dialog = new Dialog(getActivity(), R.style.CustomDatePickerDialog);
    dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); // must be called before set content
    dialog.setContentView(R.layout.dialog_datepicker);
    dialog.setCanceledOnTouchOutside(true);

    // 设置宽度为屏宽、靠近屏幕底部。
    Window window = dialog.getWindow();
    WindowManager.LayoutParams wlp = window.getAttributes();
    wlp.gravity = Gravity.BOTTOM;
    wlp.width = WindowManager.LayoutParams.MATCH_PARENT;
    window.setAttributes(wlp);

    return dialog;
  }


 <!-- res/values/styles.xml -->
    <style name="CustomDatePickerDialog" parent="@style/AppTheme">
        <item name="android:layout_width">match_parent</item>
        <item name="android:layout_height">wrap_content</item>
        <item name="android:windowIsFloating">true</item>
    </style>

一个Demo

我自定义了一个日期选择的DialogFragment,这是它的github地址

rpgonly answered 9 years, 2 months ago

Your Answer