更改Android 4.0.3的DatePickerDialog按钮的顺序

时间:2012-07-05 08:15:45

标签: android android-layout android-intent android-emulator android-widget

我创建了DatePickerDialog

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

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

enter image description here

如上所示,“取消”按钮显示在左侧,而“设置”按钮位于右侧。但是在Android 2.3.3上,按钮顺序是另一种方式。

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

2 个答案:

答案 0 :(得分:2)

  

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

你没有。您可以将它们单独留下,也可以使用自己的DatePicker创建自己的对话框,其中的按钮顺序错误。

请注意,大多数Android应用用户使用的不只是Android应用。他们实际上使用其他应用。其他一些应用程序将使用DatePickerDialog,这些对话框将按照屏幕截图所示的按钮顺序。对于您来说,遵守设备标准(因此所有DatePickerDialogs的工作方式相同)比在某些设备上强制执行错误的按钮顺序更为重要。

答案 1 :(得分: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)在显示对话框(!)后,我们从其parrent布局中删除了一个否定按钮('取消'在您的情况下)。删除后,设置'按钮(或对话框中的任何其他按钮)成为布局中的最后一个元素。

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