Я хочу ограничить выбор даты, чтобы установить дату, указанную выше текущей системы. скажите мне, как проверить дату datepicker.Как ограничить дату текстового поля datepicker на будущую дату. он должен разрешить только предыдущую дату.
1
A
ответ
1
Create Custom Dialog an show toat on date greater then current date
final Dialog dialog = new Dialog(SettingActivity.this);
dialog.setContentView(R.layout.date_picker_view);
dialog.setTitle("Select Date");
final TextView tvTime = (TextView) dialog
.findViewById(R.id.tv_time);
final DatePicker datePicker = (DatePicker) dialog
.findViewById`enter code here`(R.id.datePicker1);
Button set = (Button) dialog.findViewById(R.id.button_time_set);
Button cancel = (Button) dialog
.findViewById(R.id.button_time_cancel);
datePicker
.setDescendantFocusability(DatePicker.FOCUS_BLOCK_DESCENDANTS);
Calendar originalDate=Calendar.getInstance();
Calendar previousWeekDay = (Calendar) originalDate.clone();
previousWeekDay.add(Calendar.YEAR, -35);
previousWeekDay.set(Calendar.MONTH, 0);
previousWeekDay.set(Calendar.DAY_OF_MONTH, 1);
datePicker.init(previousWeekDay.get(Calendar.YEAR), previousWeekDay.get(Calendar.MONTH), previousWeekDay.get(Calendar.DAY_OF_MONTH), null);
final Calendar calendar = Calendar.getInstance();
final int mDay = calendar
.get(Calendar.DAY_OF_MONTH)+1;
calendar.set(Calendar.DAY_OF_MONTH, mDay);
set.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
// TODO Auto-generated method stub
Calendar cal=Calendar.getInstance();
cal.set(datePicker.getYear(), datePicker.getMonth(), datePicker.getDayOfMonth());
if(cal.after(calendar)){
Toast.makeText(SettingActivity.this, "DOB not more then current date", Toast.LENGTH_SHORT).show();
handler.etDOB.setText("");
}else{
date_selected = String.valueOf(datePicker.getDayOfMonth())+"/"+String.valueOf(datePicker.getMonth()+1)+"/"+String.valueOf(datePicker.getYear());
handler.etDOB.setText(datePicker.getDayOfMonth()+"-"+AccessRecordForPDF.MONTHS[datePicker.getMonth()+1]+"-"+String.valueOf(datePicker.getYear()));
dialog.dismiss();
}
}
});
cancel.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
// TODO Auto-generated method stub
dialog.dismiss();
}
});
dialog.show();
}
});
And create dialog.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="270dp"
android:layout_height="190dp"
android:background="@android:color/black"
android:orientation="vertical" >
<DatePicker
android:id="@+id/datePicker1"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<!--
<com.amvrin.PillsScheduler.DrumPicker.DateDrumPicker
android:id="@+id/datepicker"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
-->
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@android:color/black"
android:orientation="horizontal" >
<Button
android:id="@+id/button_time_set"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@drawable/button_green"
android:text="Set"
android:textColor="@android:color/white" />
<Button
android:id="@+id/button_time_cancel"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@drawable/button_green"
android:text="Cancel"
android:textColor="@android:color/white" />
</LinearLayout>
</LinearLayout>
0
package com.example.pickerdate;
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.widget.Button;
import android.widget.DatePicker;
import android.widget.DatePicker.OnDateChangedListener;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends Activity {
private TextView mDateDisplay;
private int mYear;
private int year1;
private int mMonth;
private int mDay;
private int month;
private int day;
static final int DATE_DIALOG_ID = 1;
Button pickDate;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mDateDisplay = (TextView) findViewById(R.id.dateDisplay);
pickDate = (Button) findViewById(R.id.pickDate);
pickDate.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
System.out.println("hello3");
showDialog(DATE_DIALOG_ID);
}
});
System.out.println("hello1");
final Calendar c = Calendar.getInstance();
mYear = c.get(Calendar.YEAR);
mMonth = c.get(Calendar.MONTH);
mDay = c.get(Calendar.DAY_OF_MONTH);
updateDisplay();
year1 = mYear;
month = mMonth;
day = mDay;
}
@Override
protected Dialog onCreateDialog(int id) {
DatePickerDialog _date = null;
switch (id) {
case DATE_DIALOG_ID:
_date = new DatePickerDialog(this, mDateSetListener, mYear, mMonth,
mDay) {
@Override
public void onDateChanged(DatePicker view, int year,
int monthOfYear, int dayOfMonth) {
System.out.println("----------onDateChanged()-----------"
+ mYear + "--" + year);
System.out.println("----------onDateChanged()-----------"
+ mMonth + "--" + monthOfYear);
System.out.println("----------onDateChanged()-----------"
+ mDay + "--" + dayOfMonth);
/*
* These lines of commented code used for only setting the
* maximum date on Date Picker..
*
* if (year > mYear && year) view.updateDate(mYear, mMonth,
* mDay);
*
* if (monthOfYear > mMonth && year == mYear)
* view.updateDate(mYear, mMonth, mDay);
*
* if (dayOfMonth > mDay && year == mYear && monthOfYear ==
* mMonth) view.updateDate(mYear, mMonth, mDay);
*/
// these below lines of code used for setting the maximum as
// well as minimum dates on Date Picker Dialog..
if ((mYear > year)
|| ((mMonth > monthOfYear) && (mYear == year))
|| ((mDay > dayOfMonth) && (mYear == year) && (mMonth == monthOfYear))) {
view.updateDate(year1, month, day);
}
}
};
}
System.out.println("hello5");
return _date;
}
protected void onPrepareDialog(int id, Dialog dialog) {
switch (id) {
case DATE_DIALOG_ID:
System.out.println("hello6");
((DatePickerDialog) dialog).updateDate(mYear, mMonth, mDay);
break;
}
}
private void updateDisplay() {
System.out.println("hello2");
mDateDisplay.setText(new StringBuilder()
// Month is 0 based so add 1
.append(mMonth + 1).append("-").append(mDay).append("-")
.append(mYear).append(" "));
}
private DatePickerDialog.OnDateSetListener mDateSetListener = new DatePickerDialog.OnDateSetListener() {
public void onDateSet(DatePicker view, int year, int monthOfYear,
int dayOfMonth) {
System.out.println("hello7");
mYear = year;
mMonth = monthOfYear;
mDay = dayOfMonth;
System.out.println("year=" + year);
System.out.println("month=" + monthOfYear);
System.out.println("day=" + dayOfMonth);
updateDisplay();
}
};
}
0
Поскольку уровень API 11 существует способ для этого:
1.DatePicker.setMaxDate (длинный MaxDate)
2.Если он должен работать в предыдущих версиях, использование этот метод:
общественного недействительными инициализации (интермедиат год, внутр monthOfYear, внутр DayOfMonth, DatePicker.OnDateChangedListener onDateChangedListener)
0
public Dialog oncreateDialogue(int id)
{
Calendar currentDate= Calendar.getInstance();
final int cyear = currentDate.get(Calendar.YEAR);
final int cmonth = currentDate.get(Calendar.MONTH);
final int cday = currentDate.get(Calendar.DAY_OF_MONTH);
// Log.d("", "cyear"+cyear + cmonth + cday);
DatePickerDialog dialog = null;
/* if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB)
{
dialog = new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener()
{
@Override
public void onDateSet(DatePicker view, int selectedYear, int selectedMonth, int selectedDate)
{
// mTextView.setText(selectedDate + "/" + selectedMonth + 1 + "/" + selectedYear);
Log.d("", "ondateset"+selectedDate + "/" + selectedMonth + "/" + selectedYear);
}
}, cyear, cmonth, cday);
// Calendar currentDate = Calendar.getInstance();
dialog.getDatePicker()
//If you need you can set min date too
}
else
{*/
dialog = new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener()
{
@Override
public void onDateSet(DatePicker view, int selectedYear, int selectedMonth, int selectedDate)
{
int lmn=selectedMonth+1;
sp_dobFlag=true;
selectedDatepublic=selectedDate + "/"+lmn + "/"+selectedYear ;
ed_dob.setText(selectedDatepublic);
//Log.d("", "ondateset"+selectmnth);
}
}, cyear, cmonth , cday)
{
@Override
public void onDateChanged(DatePicker view, int year, int month, int day)
{
Log.d("", "not>--ondatechange"+cday);
Log.d("", "not>--ondatechange"+day);
if (year > cyear)
{
Log.d("", "date >cdate");
view.updateDate(cyear, cmonth, cday); //update the date picker to selected date
}
if(year==cyear)
{
if(month > cmonth)
{
view.updateDate(cyear, cmonth, cday);
}
}
if(year==cyear)
{
if(month == cmonth)
{
if(day > cday)
{
view.updateDate(cyear, cmonth, cday);
}
}
}
}
};
// }
return dialog;
}
Смежные вопросы
- 1. Datepicker не принимает будущую дату
- 2. DatePicker, показывающий предыдущую дату
- 3. Отключить будущую дату
- 4. Как определить будущую дату
- 5. jQuery DatePicker: Ограничить набранную дату
- 6. Как мне разрешить только день и дату на Datepicker?
- 7. ограничить пользователя, чтобы выбрать будущую дату в datepicker
- 8. Parse.com Запрос на будущую дату
- 9. Как принять сегодняшнюю дату и вперед только на предыдущую дату?
- 10. Datepicker возвращает только дату
- 11. Уведомление Android на будущую дату
- 12. как отключить предыдущую дату в yii datepicker
- 13. JQuery datepicker, показывающий предыдущую дату в MVC
- 14. JQuery Datepicker должен показывать только дату
- 15. Как сохранить дату datepicker как дату mongodb?
- 16. Ограничение наборов результатов на будущую дату - SQL
- 17. Проверка календаря на предыдущую дату
- 18. заменить будущую дату прошлой датой
- 19. Android: Как установить минимальную дату диалога datepicker на текущую дату
- 20. показать будущую дату с moment.js
- 21. JavaScript-календарь, чтобы принимать только будущую дату
- 22. ЗАКРЫТО - Android DatePicker ограничить максимальную дату
- 23. Ограничить дату в jquery datepicker на основе другого datepicker или текстового поля
- 24. DatePicker iPhone получает только дату
- 25. Datepicker не превышая на текущую дату
- 26. Получить предыдущую дату рассрочка
- 27. NSLog, показывающий предыдущую дату
- 28. Как отключить будущую дату в x-редактируемой?
- 29. триггерный метод на будущую дату в java
- 30. Как ограничить дату?