1

我创建了一个DatePickerDialog

DatePickerDialog datePickerDialog = new DatePickerDialog(getActivity(), this, year, month, day);

并在Android 4.0.3 (API 15)设备上显示它,它看起来像这样:

在此处输入图像描述

如上所示,“取消”按钮显示在左侧,而“设置”按钮显示在右侧。但在 Android 2.3.3 上,按钮顺序是相反的。

那么,如何更改按钮的顺序以便在Android 4.0.3设备上显示左侧的DatePickerDialog设置”按钮和右侧的“取消”按钮?

4

2 回答 2

2

那么,如何更改 DatePickerDialog 的按钮顺序,以便在 Android 4.0.3 设备上显示左侧的“设置”按钮和右侧的“取消”按钮?

你没有。要么不理会它们,要么用自己的对话框创建自己的对话框,其中DatePicker的按钮顺序错误。

请记住,大多数 Android 应用程序用户使用的不仅仅是您的 Android 应用程序。他们实际上使用其他应用程序。其中一些其他应用程序将使用DatePickerDialog,并且这些对话框将具有按钮顺序,如屏幕截图所示。对你的用户来说,坚持设备标准(所以他们的所有DatePickerDialogs工作都一样)比在某些设备上强制错误的按钮顺序更重要。

于 2012-07-05T11:41:21.907 回答
1

实际上你可以而且你不需要创建自己的自定义对话框:

... 
datePickerDialog.show();

    Button negativeButton = datePickerDialog.getButton(DatePickerDialog.BUTTON_NEGATIVE);
    ViewParent buttonParent = negativeButton.getParent();

    if (buttonParent instanceof LinearLayout)
    {
        LinearLayout datePickerDialogLayout = ((LinearLayout) buttonParent);
        datePickerDialogLayout.removeView(negativeButton);
        datePickerDialogLayout.addView(negativeButton);
    }

所以我们在这里做的是:

1)显示对话框(!)后,我们从其父布局中删除一个否定按钮(在您的情况下为“取消”)。当它被移除时,“设置”按钮(或对话框中的任何其他按钮)将成为布局中的最后一个元素。

2)再次添加它(否定按钮)。因此,最后添加的视图成为父布局中的最后一个元素,即对话框。

于 2015-12-22T14:29:03.057 回答