【问题标题】:Change buttons' order of DatePickerDialog for Android 4.0.3更改 Android 4.0.3 的 DatePickerDialog 按钮的顺序
【发布时间】:2012-07-05 14:55:42
【问题描述】:

我创建了一个DatePickerDialog

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

并在 Android 4.0.3 (API 15) 设备上显示它,如下所示:

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

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

【问题讨论】:

  • 根据 Android 设计模式,Ok/Set 按钮应始终位于从 ICS 应用的右上角

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


【解决方案1】:

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

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

请注意,大多数 Android 应用用户使用的不仅仅是您的 Android 应用。他们实际上使用其他应用程序。其中一些其他应用程序将使用DatePickerDialog,并且这些对话框将具有如屏幕截图所示的按钮顺序。对于您的用户而言,坚持设备标准(因此他们的所有DatePickerDialogs 工作方式相同)比在某些设备上强制错误的按钮顺序更重要。

【讨论】:

    【解决方案2】:

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

    ... 
    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) 再次添加它(否定按钮)。因此,最后添加的视图成为父布局中的最后一个元素,即对话框。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-02
      相关资源
      最近更新 更多