2016-02-24 185 views
0

我想在DatePickerDialog中的今天日期之前禁用日期。我是在android中新建的,請告訴我該怎麼做。這裏是我爲DatePickerDialog編寫的代碼。在DatePickerDialog Android的今天日期之前禁用日期?

<TextView 
 
      android:id="@+id/tv_arrival" 
 
      android:layout_width="wrap_content" 
 
      android:layout_height="wrap_content" 
 
      android:layout_alignParentLeft="true" 
 
      android:layout_centerVertical="true" 
 
      android:text="@string/arrivaldate"/> 
 

 
     <Button 
 
      android:id="@+id/btn_arrival" 
 
      android:layout_width="wrap_content" 
 
      android:layout_height="wrap_content" 
 
      android:layout_alignParentRight="true" 
 
      android:text="Set"/>

Button btn_arrival = (Button) findViewById(R.id.btn_arrival); 

     txt_arrival = (TextView) findViewById(R.id.tv_arrival);   
     myCalendar = Calendar.getInstance();   

     final DatePickerDialog.OnDateSetListener date = new DatePickerDialog.OnDateSetListener() { 

      @Override 
      public void onDateSet(DatePicker view, int year, int monthOfYear, 
        int dayOfMonth) { 

       myCalendar.set(Calendar.YEAR, year); 
       myCalendar.set(Calendar.MONTH, monthOfYear); 
       myCalendar.set(Calendar.DAY_OF_MONTH, dayOfMonth); 

       updateLabel(); 
      } 
     }; 


     btn_arrival.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 

       new DatePickerDialog(MainActivity.this,date , myCalendar 
         .get(Calendar.YEAR), myCalendar.get(Calendar.MONTH), 
         myCalendar.get(Calendar.DAY_OF_MONTH)).getDatePicker().setMinDate(System.currentTimeMillis() - 1000); 

      } 

     }); 
private void updateLabel() { 

     String myFormat = "dd.MM.yyyy"; //In which you need put here. 
     SimpleDateFormat sdf = new SimpleDateFormat(myFormat, Locale.US); 

     txt_arrival.setText("Arrival Date on:" + sdf.format(myCalendar.getTime())); 

    } 

請建議我什麼都做。

+0

見[此](http://www.codota.com/android/methods/ android.widget.DatePicker/setMinDate)或[this](http://stackoverflow.com/questions/22496947/android-datepicker-disabling-the-previous-dates-based-on-the-current-date/22497233#22497233 ) –

回答

4

您可以使用此行代碼

datePicker.setMinDate(System.currentTimeMillis() - 1000); 

您可以使用它像這樣。我測試,它工作

import android.app.DatePickerDialog; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 
import android.widget.DatePicker; 

public class MainActivity extends AppCompatActivity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    Button mButton = (Button)findViewById(R.id.m_button); 
    mButton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 

      DatePickerDialog mDate = new DatePickerDialog(MainActivity.this, date, 2016, 2, 24); 
      mDate.getDatePicker().setMinDate(System.currentTimeMillis() - 1000); 
      mDate.show(); 
     } 
    }); 
} 

final DatePickerDialog.OnDateSetListener date = new DatePickerDialog.OnDateSetListener() { 

    @Override 
    public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { 
     view.setMinDate(System.currentTimeMillis() - 1000); 
    } 
}; 

}

+0

我在哪裏可以把它放在我的代碼上我把它寫在我的代碼上,但是我不能把顯示方法顯示在日期選擇器上我不知道是否將它寫入正確 – hashim

+0

我已更新我的代碼。你可以看到 – Inducesmile

+0

不能正常工作,我現在試試 – hashim

0

我測試的代碼和它的工作原理

final Calendar calendarEndDate = Calendar.getInstance(); 
YearEndDate = calendarEndDate.get(Calendar.YEAR); 
MonthEndDate = calendarEndDate.get(Calendar.MONTH); 
DayEndDate = calendarEndDate.get(Calendar.DAY_OF_MONTH); 
updateEndDisplay(); 
endDate.setOnClickListener(new View.OnClickListener() { 
    public void onClick(View v) { 
     DatePickerDialog endDate = new DatePickerDialog(AttendandItemRequest.this, 
       endDateSetListener, 
       YearEndDate, MonthEndDate, DayEndDate); 
     endDate.getDatePicker().setMinDate(System.currentTimeMillis() - 1000); 
     endDate.show(); 
    } 
}); 
相關問題