DatePickerdialog无法正常工作且看起来不太好

时间:2015-03-07 10:14:49

标签: java android android-studio android-datepicker

我正在尝试使用DatePicker:
我的代码是:

DatePicker datePicker = (DatePicker) v.findViewById(R.id.dialog_date_datePicker);
        datePicker.init(year, month, day, new OnDateChangedListener() {
            @Override
            public void onDateChanged(DatePicker view, int year, int month,
                    int day) {
                mDate = new GregorianCalendar(year, month, day).getTime();
                getArguments().putSerializable(EXTRA_DATE, mDate);
            }
        });

但是当我选择日期时,永远不会调用onDateChanged方法。在谷歌搜索后,我发现如果我更改了日期选择器布局以包括:android:datePickerMode="spinner" />并删除android:calendarViewShown="false",则会调用onDateChanged并且代码可以正常工作,但日期选择器对话框看起来非常糟糕。<登记/> 我的布局是:

<DatePicker xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/dialog_date_datePicker"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="vertical" 
    android:datePickerMode="spinner" />
    <!--  android:calendarViewShown="false" -->  

那么为什么calenderViewShown属性会导致问题?如何改善日期选择器UI对话框的外观呢?

2 个答案:

答案 0 :(得分:0)

如果你想使用datepicker对话框而不需要使用DatePicker就这样做:

    Calendar c = Calendar.getInstance();
    DatePickerDialog datePickerDialog = new DatePickerDialog(SignUpActivity.this, android.R.style.Theme_Holo_Light_Dialog_MinWidth, new OnDateSetListener() {

        @Override
        public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
            // TODO Auto-generated method stub              
            try {
                Date d = new SimpleDateFormat("yyyy-MM-dd", Locale.getDefault()).parse(year+"-"+(monthOfYear+1)+"-"+dayOfMonth);                            


            } catch (Exception e) {
                // TODO: handle exception
                e.printStackTrace();
            }
        }
    }, c.get(Calendar.YEAR), c.get(Calendar.MONTH), c.get(Calendar.DAY_OF_MONTH));      

    datePickerDialog.getDatePicker().setCalendarViewShown(false);   
    datePickerDialog.getWindow().setBackgroundDrawableResource(android.R.color.transparent);        
    datePickerDialog.show();

答案 1 :(得分:0)

您也可以使用此库:Beautiful DatePicker UI

如果在AS上,请在依赖项中添加:compile 'com.github.flavienlaurent.datetimepicker:library:0.0.2'

此外,正如这个问题的指出:Datepicker

您可以使用它来解决问题。

<DatePicker xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/dialog_date_datePicker"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:calendarViewShown="false"
    android:datePickerMode="spinner" >
</DatePicker>