三星galaxy S7上运行Android 7.x的DatePickerDialog显示错误

时间:2017-03-03 07:49:20

标签: android

enter image description here

只有三星s7运行android 7.x

这是我的代码

 DatePickerDialog datePickerDialog = new DatePickerDialog(activity
                ,new DatePickerDialog.OnDateSetListener() {
                    @Override
                    public void onDateSet(DatePicker view, int year
                                          , int monthOfYear
                                          , int dayOfMonth) {
                        listener.onDateSet(year, monthOfYear, dayOfMonth);
                    }
                }
                ,c.get(Calendar.YEAR)
                , c.get(Calendar.MONTH)
                , c.get(Calendar.DAY_OF_MONTH));

        int firstDayOfWeek = TimeUtils.getFirstDayOfWeek(activity);
        datePickerDialog.getDatePicker().setFirstDayOfWeek(firstDayOfWeek);
        datePickerDialog.show();

有人建议我如何解决这个问题?

谢谢!

3 个答案:

答案 0 :(得分:0)

您没有为对话框设置自定义样式,所以这是正常的(默认样式)。如果你想要"修复"这个" bug"你必须创建自定义样式对话框。

答案 1 :(得分:0)

对于我在同一设备上工作正常,我在我的应用程序中扩展DialogFrament并使用这样的代码:

public static class DatePickerFragment extends DialogFragment
                            implements DatePickerDialog.OnDateSetListener {

    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        // Use the current date as the default date in the picker
        final Calendar c = Calendar.getInstance();
        int year = c.get(Calendar.YEAR);
        int month = c.get(Calendar.MONTH);
        int day = c.get(Calendar.DAY_OF_MONTH);

        // Create a new instance of DatePickerDialog and return it
        return new DatePickerDialog(getActivity(), this, year, month, day);
    }

    public void onDateSet(DatePicker view, int year, int month, int day) {
        // Do something with the date chosen by the user
    }
}

然后在我需要打开对话框的视图上使用此方法:

public void showDatePickerDialog(View v) {
    DialogFragment newFragment = new DatePickerFragment();
    newFragment.show(getSupportFragmentManager(), "datePicker");
}

尝试实施此操作或按照开发者网站上的指南操作: https://developer.android.com/guide/topics/ui/controls/pickers.html

答案 2 :(得分:0)

问题是DatePickerDialog的UI的实际实现是特定于设备的,并且可能存在一些问题。

我在屏幕宽度小于360dp的设备上遇到了类似的问题。通过使用THEME_HOLO_LIGHT主题修复此问题。

DatePickerDialog有一个接受主题的构造函数:

DatePickerDialog(Context context, int theme, DatePickerDialog.OnDateSetListener callBack, int year, int monthOfYear, int dayOfMonth)

您可以使用以下其中一项:

  • AlertDialog.THEME_DEVICE_DEFAULT_DARK
  • AlertDialog.THEME_DEVICE_DEFAULT_LIGHT
  • AlertDialog.THEME_HOLO_DARK
  • AlertDialog.THEME_HOLO_LIGHT
  • AlertDialog.THEME_TRADITIONAL