DatePicker 内容被自定义对话框的标题重叠

DatePicker content is overlapped by title of custom dialog

我创建了自定义对话框片段以便能够使用 Joda 日期类型。


正在创建对话框。这是我自定义 DialogFragment 的方法。

public Dialog onCreateDialog(Bundle savedInstanceState) {
        String title = getArguments().getString(KEY_TITLE, getString(R.string.dg_dp_title));
        LocalDate date = (LocalDate) getArguments().getSerializable(KEY_DATE);
        if (null == date) date = new LocalDate();
        FragmentActivity context = getActivity();
        @SuppressLint("InflateParams")
        View view = LayoutInflater.from(context).inflate(R.layout.dialog_date_picker, null);
        mDatePickerView = (DatePicker) view.findViewById(R.id.dg_dp_picker);
        mDatePickerView.updateDate(date.getYear(), date.getMonthOfYear() - 1, date.getDayOfMonth());
        return new AppDialogBuilder(context)
                .setTitle(title)
                .setView(view)
                .setPositiveButton(R.string.dg_dp_button_positive, mListener)
                .setNegativeButton(R.string.dg_dp_button_negative, mListener)
                .create();
    }

布局文件。

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
             android:layout_width="match_parent"
             android:layout_height="match_parent">

    <DatePicker
        android:id="@+id/dg_dp_picker"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:calendarViewShown="true"
        android:datePickerMode="calendar"
        android:spinnersShown="false"/>
</FrameLayout>

如果删除设置标题表单生成器,那么对话框看起来会很好

但我需要使用标题。想法?

您可以尝试制作自己的自定义标题布局,并调整您的标题大小

title_bar.xml(自定义标题布局)

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:id="@+id/title_tv"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:textSize="15dp"
        android:textStyle="bold"
        />

</LinearLayout>

现在您必须使用自定义标题设置对话框:

datePickerDialog.setCustomTitle(view_of_your_custom_title_layout);