2014-09-15 2 views
0

Я использую учебник, который я нашел в сети для datepicker. Но я хочу установить максимальную и минимальную дату для datepicker. Также я слышал, что есть проблема для уровня API меньше 11.Как установить максимальную и минимальную дату datepicker в android

Мой код:

package com.androidexample.datepicker; 

import java.util.Calendar; 
import android.app.Activity; 
import android.app.DatePickerDialog; 
import android.app.Dialog; 
import android.os.Bundle; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.DatePicker; 
import android.widget.TextView; 

public class DatePickerExample extends Activity { 

    private TextView Output; 
    private Button changeDate; 

    private int year; 
    private int month; 
    private int day; 

    static final int DATE_PICKER_ID = 1111; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     Output = (TextView) findViewById(R.id.Output); 
     changeDate = (Button) findViewById(R.id.changeDate); 

     // Get current date by calender 

     final Calendar c = Calendar.getInstance(); 
     year = c.get(Calendar.YEAR); 
     month = c.get(Calendar.MONTH); 
     day = c.get(Calendar.DAY_OF_MONTH); 

     // Show current date 

     Output.setText(new StringBuilder() 
       // Month is 0 based, just add 1 
       .append(month + 1).append("-").append(day).append("-") 
       .append(year).append(" ")); 

     // Button listener to show date picker dialog 

     changeDate.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 

       // On button click show datepicker dialog 
       showDialog(DATE_PICKER_ID); 

      } 

     }); 
    } 


    @Override 
    protected Dialog onCreateDialog(int id) { 
     switch (id) { 
     case DATE_PICKER_ID: 

      // open datepicker dialog. 
      // set date picker for current date 
      // add pickerListener listner to date picker 
      return new DatePickerDialog(this, pickerListener, year, month,day); 
     } 
     return null; 
    } 

    private DatePickerDialog.OnDateSetListener pickerListener = new DatePickerDialog.OnDateSetListener() { 

     // when dialog box is closed, below method will be called. 
     @Override 
     public void onDateSet(DatePicker view, int selectedYear, 
       int selectedMonth, int selectedDay) { 

      year = selectedYear; 
      month = selectedMonth; 
      day = selectedDay; 

      // Show selected date 
      Output.setText(new StringBuilder().append(month + 1) 
        .append("-").append(day).append("-").append(year) 
        .append(" ")); 

      } 
     }; 

} 

XML-код:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" > 

    <Button 
     android:id="@+id/changeDate" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Click To Change Date" /> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Current/Selected Date (M-D-YYYY): " 
     android:textAppearance="?android:attr/textAppearanceLarge" /> 

    <TextView 
     android:id="@+id/Output" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="" 
     android:textAppearance="?android:attr/textAppearanceLarge" /> 



</LinearLayout> 

проблема с выше кода является то, что не существует никакого верхнего предела на год часть. Я Мне также нужен нижний предел на год. Может кто-нибудь скажет мне, как изменить код, чтобы установить верхний и нижний предел на часть года?

+2

'DatePicker' имеет' setMinDate() 'и' setMaxDate() 'методы. –

+0

Возможный дубликат [даты datepicker для Android до max api level 11] (http://stackoverflow.com/questions/10836679/android-datepicker-min-max-date-before-api-level-11) –

+0

Но я не используя управление datepicker в файле xml. Может кто-нибудь скажет мне, как изменить мой код, чтобы установить максимальные и минимальные даты? – user3852672

ответ

0

В DatePickerDialog.OnDateSetListener() вы можете сравнить год, год, дату с указанными минимальными и максимальными датами.

0

Вы можете получить DatePicker используя DatePickerDialog.

DatePickerDialog dialog = new DatePickerDialog(this, pickerListener, year, month,day); 
//calculate min and max dates (you can use, Calender API or Joda Time, just search for it. 
dialog.getDatePicker().setMaxDate(maxDate.getTime()); 
dialog.getDatePicker().setMinDate(minDate.getTime()); 
return dialog; 
0

Вы можете получить основной DatePicker из DatePickerDialog простым вызовом getDatePicker() и установить его границы с помощью:

setMinDate(long minDate)

setMaxDate(long maxDate)

Это работает только для уровня API 11 и выше.

Смежные вопросы