Datepicker: как всплывающее окно datepicker при нажатии на edittext
Я хочу показать всплывающее окно datepicker. Я нашел несколько примеров, но я не получаю его должным образом. У меня есть один edittext, и я хочу, чтобы при нажатии на edittext диалоговое окно datepicker должно всплывать и после установки даты дата должна отображаться в edittext в формате dd/mm/yyyy. Пожалуйста, предоставьте мне пример кода или хорошие ссылки.
24 ответа:
попробуйте это в XML-файл:
<EditText android:id="@+id/Birthday" custom:font="@string/font_avenir_book" android:clickable="true" android:editable="false" android:hint="@string/birthday"/>
теперь в файле Java:
Calendar myCalendar = Calendar.getInstance(); EditText edittext= (EditText) findViewById(R.id.Birthday); DatePickerDialog.OnDateSetListener date = new DatePickerDialog.OnDateSetListener() { @Override public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { // TODO Auto-generated method stub myCalendar.set(Calendar.YEAR, year); myCalendar.set(Calendar.MONTH, monthOfYear); myCalendar.set(Calendar.DAY_OF_MONTH, dayOfMonth); updateLabel(); } }; edittext.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub new DatePickerDialog(classname.this, date, myCalendar .get(Calendar.YEAR), myCalendar.get(Calendar.MONTH), myCalendar.get(Calendar.DAY_OF_MONTH)).show(); } });
теперь добавьте метод в вышеуказанное действие.
private void updateLabel() { String myFormat = "MM/dd/yy"; //In which you need put here SimpleDateFormat sdf = new SimpleDateFormat(myFormat, Locale.US); edittext.setText(sdf.format(myCalendar.getTime())); }
добавить
android:focusable="false"
в xml-файле EditText, чтобы разрешить одно касание.
не смог заставить никого из них работать, поэтому добавлю свой на всякий случай, если это поможет.
public class MyEditTextDatePicker implements OnClickListener, OnDateSetListener { EditText _editText; private int _day; private int _month; private int _birthYear; private Context _context; public MyEditTextDatePicker(Context context, int editTextViewID) { Activity act = (Activity)context; this._editText = (EditText)act.findViewById(editTextViewID); this._editText.setOnClickListener(this); this._context = context; } @Override public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { _birthYear = year; _month = monthOfYear; _day = dayOfMonth; updateDisplay(); } @Override public void onClick(View v) { Calendar calendar = Calendar.getInstance(TimeZone.getDefault()); DatePickerDialog dialog = new DatePickerDialog(_context, this, calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH)); dialog.show(); } // updates the date in the birth date EditText private void updateDisplay() { _editText.setText(new StringBuilder() // Month is 0 based so add 1 .append(_day).append("/").append(_month + 1).append("/").append(_birthYear).append(" ")); } }
также то, что не упоминается в других. Убедитесь, что вы поместили следующее в EditText xml.
android:focusable="false"
в противном случае, как в моем случае клавиатура будет продолжать выскакивать. Надеюсь, это поможет кому-то
class MyClass implements OnClickListener, OnDateSetListener { EditText editText; this.editText = (EditText) findViewById(R.id.editText); this.editText.setOnClickListener(this); @Override public void onClick(View v) { DatePickerDialog dialog = new DatePickerDialog(this, this, 2013, 2, 18); dialog.show(); } @Override public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { // this.editText.setText(); } }
есть еще один лучший многоразовый способ:
создать класс:
class setDate implements OnFocusChangeListener, OnDateSetListener { private EditText editText; private Calendar myCalendar; public setDate(EditText editText, Context ctx){ this.editText = editText; this.editText.setOnFocusChangeListener(this); myCalendar = Calendar.getInstance(); } @Override public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { // this.editText.setText(); String myFormat = "MMM dd, yyyy"; //In which you need put here SimpleDateFormat sdformat = new SimpleDateFormat(myFormat, Locale.US); myCalendar.set(Calendar.YEAR, year); myCalendar.set(Calendar.MONTH, monthOfYear); myCalendar.set(Calendar.DAY_OF_MONTH, dayOfMonth); editText.setText(sdformat.format(myCalendar.getTime())); } @Override public void onFocusChange(View v, boolean hasFocus) { // TODO Auto-generated method stub if(hasFocus){ new DatePickerDialog(ctx, this, myCalendar .get(Calendar.YEAR), myCalendar.get(Calendar.MONTH), myCalendar.get(Calendar.DAY_OF_MONTH)).show(); } } }
затем вызовите этот класс под функцией onCreate:
EditText editTextFromDate = (EditText) findViewById(R.id.editTextFromDate); setDate fromDate = new setDate(editTextFromDate, this);
вот как я это делаю: похоже на выбранный ответ, но с использованием статического диалогового класса, поэтому он более многоразовый, а также с использованием onFocusChange вместо onClick.
editText.setOnFocusChangeListener(new View.OnFocusChangeListener() { @Override public void onFocusChange(View v, boolean hasFocus) { if (hasFocus) { DialogFragment datePickerFragment = new DatePickerFragment() { @Override public void onDateSet(DatePicker view, int year, int month, int day) { Log.d(TAG, "onDateSet"); Calendar c = Calendar.getInstance(); c.set(year, month, day); editText.setText(df.format(c.getTime())); nextField.requestFocus(); //moves the focus to something else after dialog is closed } }; datePickerFragment.show(getActivity().getSupportFragmentManager(), "datePicker"); } } });
и диалоговое окно datepicker.
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); } @Override public void onDateSet(DatePicker view, int year, int month, int day) { //blah } }
выбранный ответ не совсем работал для меня, так как мне пришлось нажать на поле EditText один раз, а затем снова нажать его, прежде чем OnClickListener выстрелит. Я смог исправить это, заменив OnClickListener на OnTouchListener, на всякий случай, если кто-то столкнулся с подобной проблемой, вот как выглядит мой код:
Calendar myCalendar = Calendar.getInstance(); DatePickerDialog.OnDateSetListener date = new DatePickerDialog.OnDateSetListener() { @Override public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { // TODO Auto-generated method stub myCalendar.set(Calendar.YEAR, year); myCalendar.set(Calendar.MONTH, monthOfYear); myCalendar.set(Calendar.DAY_OF_MONTH, dayOfMonth); updateLabel(); } }; edittext.setOnTouchListener(new View.OnTouchListener() { @Override public void onTouch(View v, MotionEvent event) { if(event.getAction() == MotionEvent.ACTION_DOWN) { new DatePickerDialog(classname.this, date, myCalendar .get(Calendar.YEAR), myCalendar.get(Calendar.MONTH), myCalendar.get(Calendar.DAY_OF_MONTH)).show(); } } }); private void updateLabel() { String myFormat = "MM/dd/yy"; //In which you need put here SimpleDateFormat sdf = new SimpleDateFormat(myFormat, Locale.US); edittext.setText(sdf.format(myCalendar.getTime())); }
#1. Я хочу показать datepicker с текущей датой в качестве предварительно (Я использую нож для инъекций)
@OnClick(R.id.your_view) public void onClickYourView() { final Calendar myCalendar = Calendar.getInstance(); DatePickerDialog.OnDateSetListener date = new DatePickerDialog.OnDateSetListener() { @Override public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { // TODO Auto-generated method stub myCalendar.set(Calendar.YEAR, year); myCalendar.set(Calendar.MONTH, monthOfYear); myCalendar.set(Calendar.DAY_OF_MONTH, dayOfMonth); String myFormat = "dd MMMM yyyy"; // your format SimpleDateFormat sdf = new SimpleDateFormat(myFormat, Locale.getDefault()); your_view.setText(sdf.format(myCalendar.getTime())); } }; new DatePickerDialog(mContext, date, myCalendar.get(Calendar.YEAR), myCalendar.get(Calendar.MONTH), myCalendar.get(Calendar.DAY_OF_MONTH)).show(); }
2. Если вы хотите предварительно выбрать дату, замените последнюю часть на
new DatePickerDialog(mContext, date, 1990, 0, 1).show();
затем вы можете получить его с помощью переменной myCalendar или непосредственно текст на вашем представлении.
<EditText android:id="@+id/date" android:layout_width="wrap_content" android:layout_height="wrap_content" android:ems="10" android:hint="DD/MM/YYYY" android:inputType="date" android:focusable="false"/> <EditText android:id="@+id/time" android:layout_width="wrap_content" android:layout_height="wrap_content" android:hint="00:00" android:inputType="time" android:focusable="false"/>
JAVA FILE
import android.app.DatePickerDialog; import android.app.TimePickerDialog; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.DatePicker; import android.widget.EditText; import android.widget.TimePicker; import java.util.Calendar; public class MainActivity extends AppCompatActivity implements View.OnClickListener { EditText selectDate,selectTime; private int mYear, mMonth, mDay, mHour, mMinute; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); selectDate=(EditText)findViewById(R.id.date); selectTime=(EditText)findViewById(R.id.time); selectDate.setOnClickListener(this); selectTime.setOnClickListener(this); } @Override public void onClick(View view) { if (view == selectDate) { final Calendar c = Calendar.getInstance(); mYear = c.get(Calendar.YEAR); mMonth = c.get(Calendar.MONTH); mDay = c.get(Calendar.DAY_OF_MONTH); DatePickerDialog datePickerDialog = new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener() { @Override public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { selectDate.setText(dayOfMonth + "-" + (monthOfYear + 1) + "-" + year); } }, mYear, mMonth, mDay); datePickerDialog.show(); } if (view == selectTime) { // Get Current Time final Calendar c = Calendar.getInstance(); mHour = c.get(Calendar.HOUR_OF_DAY); mMinute = c.get(Calendar.MINUTE); // Launch Time Picker Dialog TimePickerDialog timePickerDialog = new TimePickerDialog(this, new TimePickerDialog.OnTimeSetListener() { @Override public void onTimeSet(TimePicker view, int hourOfDay, int minute) { selectTime.setText(hourOfDay + ":" + minute); } }, mHour, mMinute, false); timePickerDialog.show(); } } }
решение с использованием фрагментов, MvvmCross, и Xamarin.Android
public class EnterTimeView : MvxFragment, DatePickerDialog.IOnDateSetListener { private EditText datePickerText; public EnterTimeView() { this.RetainInstance = true; } public override Android.Views.View OnCreateView(Android.Views.LayoutInflater inflater, Android.Views.ViewGroup container, Android.OS.Bundle savedInstanceState) { this.HasOptionsMenu = true; var ignored = base.OnCreateView(inflater, container, savedInstanceState); var view = inflater.Inflate(Resource.Layout.EnterTimeView, container, false); datePickerText = view.FindViewById<EditText>(Resource.Id.DatePickerEditText); datePickerText.Focusable = false; datePickerText.Click += delegate { var dialog = new DatePickerDialogFragment(Activity, Convert.ToDateTime(datePickerText.Text), this); dialog.Show(FragmentManager, "date"); }; var set = this.CreateBindingSet<EnterTimeView, EnterTimeViewModel>(); set.Bind(datePickerText).To(vm => vm.Date); set.Apply(); return view; } public void OnDateSet(Android.Widget.DatePicker view, int year, int monthOfYear, int dayOfMonth) { datePickerText.Text = new DateTime(year, monthOfYear + 1, dayOfMonth).ToString(); } private class DatePickerDialogFragment : Android.Support.V4.App.DialogFragment { private readonly Context _context; private DateTime _date; private readonly DatePickerDialog.IOnDateSetListener _listener; public DatePickerDialogFragment(Context context, DateTime date, DatePickerDialog.IOnDateSetListener listener) { _context = context; _date = date; _listener = listener; } public override Dialog OnCreateDialog(Bundle savedState) { var dialog = new DatePickerDialog(_context, _listener, _date.Year, _date.Month - 1, _date.Day); return dialog; } }
selectDate.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { DatePickerDialog mdiDialog =new DatePickerDialog(mContext,new DatePickerDialog.OnDateSetListener() { @Override public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { Toast.makeText(getApplicationContext(),year+ " "+monthOfYear+" "+dayOfMonth,Toast.LENGTH_LONG).show(); } }, year, month, date); mdiDialog.show(); } });
используя привязка данных:
<EditText android:layout_width="wrap_content" android:layout_height="wrap_content" android:focusable="false" android:onClick="@{() -> viewModel.onDateEditTextClicked()}" android:hint="@string/hint_date" android:imeOptions="actionDone" android:inputType="none" android:maxLines="1" android:text="@={viewModel.filterDate}" />
(см.
focusable
,inputType
иonClick
)внутри ViewModel:
public void onDateEditTextClicked() { // do something }
Я пробовал каждый способ, который был предложен, но все они имеют свои собственные проблемы.
лучшим решением, на мой взгляд, было бы использовать макет кадра, как показано ниже:
<FrameLayout android:layout_width="match_parent" android:layout_height="wrap_content" > <EditText android:layout_width="match_parent" android:layout_height="wrap_content" .... /> <View android:id="@+id/invisible_click_watcher" android:layout_width="match_parent" android:layout_height="match_parent" android:clickable="true" /> </FrameLayout>
а затем добавить DatePickerDialog код, который был красиво написан в ответе @Android.
мой класс для шоу
DatePicker
. Я могу использовать дляEditText
,TextView
илиButton
import android.app.DatePickerDialog; import android.content.Context; import android.view.View; import android.widget.DatePicker; import android.widget.TextView; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.TimeZone; public class TextViewDatePicker implements View.OnClickListener, DatePickerDialog.OnDateSetListener { public static final String DATE_SERVER_PATTERN = "yyyy-MM-dd"; private DatePickerDialog mDatePickerDialog; private TextView mView; private Context mContext; private long mMinDate; private long mMaxDate; public TextViewDatePicker(Context context, TextView view) { this(context, view, 0, 0); } public TextViewDatePicker(Context context, TextView view, long minDate, long maxDate) { mView = view; mView.setOnClickListener(this); mView.setFocusable(false); mContext = context; mMinDate = minDate; mMaxDate = maxDate; } @Override public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.YEAR, year); calendar.set(Calendar.MONTH, monthOfYear); calendar.set(Calendar.DAY_OF_MONTH, dayOfMonth); Date date = calendar.getTime(); SimpleDateFormat formatter = new SimpleDateFormat(DATE_SERVER_PATTERN); mView.setText(formatter.format(date)); } @Override public void onClick(View v) { Calendar calendar = Calendar.getInstance(TimeZone.getDefault()); mDatePickerDialog = new DatePickerDialog(mContext, this, calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH)); if (mMinDate != 0) { mDatePickerDialog.getDatePicker().setMinDate(mMinDate); } if (mMaxDate != 0) { mDatePickerDialog.getDatePicker().setMaxDate(mMaxDate); } mDatePickerDialog.show(); } public DatePickerDialog getDatePickerDialog() { return mDatePickerDialog; } public void setMinDate(long minDate) { mMinDate = minDate; } public void setMaxDate(long maxDate) { mMaxDate = maxDate; } }
используя
EditText myEditText = findViewById(R.id.myEditText); TextViewDatePicker editTextDatePicker = new TextViewDatePicker(context, myEditText, minDate, maxDate); //TextViewDatePicker editTextDatePicker = new TextViewDatePicker(context, myEditText); //without min date, max date
Я подумал, что лучше переопределить класс EditText...
public class EditTextDP extends android.support.v7.widget.AppCompatEditText implements View.OnClickListener, DatePickerDialog.OnDateSetListener { public EditTextDP(Context context) { super(context); setOnClickListener(this); setFocusable(false); } public EditTextDP(Context context, AttributeSet attrs) { super(context, attrs); setOnClickListener(this); setFocusable(false); } public EditTextDP(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); setOnClickListener(this); setFocusable(false); } @Override public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { setText(new StringBuilder().append(dayOfMonth).append("/").append(monthOfYear + 1).append("/").append(year)); } @Override public void onClick(View v) { Calendar calendar = Calendar.getInstance(TimeZone.getDefault()); DatePickerDialog dialog = new DatePickerDialog(getContext(), this, calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH)); dialog.show(); } }
и использовать это в XML вместо...
<*.*.*.EditTextDP android:id="@+id/c1_dob_hm" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@drawable/round_edittext_white" android:ems="10" android:padding="8dp"> </*.*.*.EditTextDP>
использовать
your_edittext.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View arg0) { final Calendar calendar = Calendar.getInstance(); int yy = calendar.get(Calendar.YEAR); int mm = calendar.get(Calendar.MONTH); int dd = calendar.get(Calendar.DAY_OF_MONTH); DatePickerDialog datePicker = new DatePickerDialog(getActivity(), new DatePickerDialog.OnDateSetListener() { @Override public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { String date = String.valueOf(dayOfMonth) + "/" + String.valueOf(monthOfYear+1) + "/" + String.valueOf(year); your_edittext.setText(date); } }, yy, mm, dd); datePicker.show(); } });
попробуй такое
btn=(Button)findViewById(R.id.chs); final Dialog dialog = new Dialog(MainActivity.this); dialog.setCanceledOnTouchOutside(true); btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { dialog.setContentView(R.layout.datepickerdialog); dp=(DatePicker) dialog.findViewById(R.id.btp); dialog.show(); ok=(Button)dialog.findViewById(R.id.btn1); ok.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { dialog.dismiss(); } }); } });
public class DatePickerActivity extends AppCompatActivity { Button button; static TextView textView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); button= (Button) findViewById(R.id.btn_click); textView= (TextView) findViewById(R.id.txt_date); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { DialogFragment newFragment=new DatePickerFragment(); newFragment.show(getFragmentManager(), "datepicker"); } }); } public class DatePickerFragment extends DialogFragment implements DatePickerDialog.OnDateSetListener{ @Override public void onDateSet(DatePicker view, int year, int monthOfYear, int day) { String years=""+year; String months=""+(monthOfYear+1); String days=""+day; if(monthOfYear>=0 && monthOfYear<9){ months="0"+(monthOfYear+1); } if(day>0 && day<10){ days="0"+day; } textView.setText(days+"/"+months+"/"+years); } @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); DatePickerDialog datePickerDialog=null; datePickerDialog=new DatePickerDialog(getActivity(), this, year, month, day); return datePickerDialog; } } }
попробуйте это:
public class DatePickerFragment extends DialogFragment implements DatePickerDialog.OnDateSetListener { DataPickerListener listener; public DatePickerFragment(DataPickerListener l) { listener = l; } @Override public Dialog onCreateDialog(Bundle savedInstanceState) { // Use the current date as the default date in the date 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); return new DatePickerDialog(getActivity(), AlertDialog.THEME_HOLO_LIGHT, this, year, month, day); } public void onDateSet(DatePicker view, int year, int month, int day) { month = month + 1; String stringOfDate = day + "-" + month + "-" + year; listener.setDate(stringOfDate); Util.Log(stringOfDate); } @Override public void onCancel(DialogInterface dialog) { // TODO Auto-generated method stub super.onCancel(dialog); listener.cancel(); } public static interface DataPickerListener { void setDate(String date); void cancel(); } } // use this function to open datePicker popup DialogFragment newFragment; public void pickDate() { if (newFragment == null) newFragment = new DatePickerFragment(new PickDateListener()); newFragment.show(getFragmentManager(), "Date Picker"); } class PickDateListener implements DataPickerListener { @Override public void setDate(String date) { createSpiner(date); onetouch = false; } @Override public void cancel() { onetouch = false; } }
EditText text = (EditText) findViewById(R.id.editText); text.setOnClickListener(new OnClickListener(){ @RequiresApi(api = Build.VERSION_CODES.N) @Override public void onClick(View view) { DatePickerDialog datePickerDialog = new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener() { @Override public void onDateSet(DatePicker datePicker, int i, int i1, int i2) { String date = i2 + "/" + (++i1) + "/" + i; text.setText(date); } },year,month,date); } }); datePickerDialog.show();
вы также можете установить минимальную дату и максимальную дату с помощью этих операторов.
datepickerDialoge.getDatepicker().setMinDate(long Date); datepickerDialoge.getDatepicker().setMaxDate(long Date);
Примечание:добавьте эти строки перед datepickerDialog.показать(); заявление вы получите дату, как это=12/2/2017.
Я надеюсь, что мой ответ поможет.
порт Котлин, вызовите функцию setDatePicker
private fun setDatePicker(dateEditText: EditText) { val myCalendar = Calendar.getInstance() val datePickerOnDataSetListener = DatePickerDialog.OnDateSetListener { _, year, monthOfYear, dayOfMonth -> myCalendar.set(Calendar.YEAR, year) myCalendar.set(Calendar.MONTH, monthOfYear) myCalendar.set(Calendar.DAY_OF_MONTH, dayOfMonth) updateLabel(myCalendar, dateEditText) } dateEditText.setOnClickListener { DatePickerDialog(this@EditDetailActivity, datePickerOnDataSetListener, myCalendar .get(Calendar.YEAR), myCalendar.get(Calendar.MONTH), myCalendar.get(Calendar.DAY_OF_MONTH)).show() } } private fun updateLabel(myCalendar: Calendar, dateEditText: EditText) { val myFormat: String = "dd-MMM-yyyy" val sdf = SimpleDateFormat(myFormat, Locale.UK) dateEditText.setText(sdf.format(myCalendar.time)) }
editText1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { DatePickerDialog.OnDateSetListener dpd = new DatePickerDialog.OnDateSetListener() { @Override public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { int s = monthOfYear + 1; String a = dayOfMonth + "/" + s + "/" + year; editText1.setText(a); } }; Time date = new Time(); DatePickerDialog d = new DatePickerDialog(UpdateStore.this, dpd, date.year, date.month, date.monthDay); d.show(); } });
Не забудьте установить атрибуты на
Edittext
как следовать:android:clickable="true" android:focusable="false"
editText.setOnClickListener(новый вид.OnClickListener() {
@Override public void onClick(final View v) { final Calendar c = Calendar.getInstance(); mYear = c.get(Calendar.YEAR); mMonth = c.get(Calendar.MONTH); mDay = c.get(Calendar.DAY_OF_MONTH); final DatePickerDialog datePickerDialog = new DatePickerDialog(getContext(), new DatePickerDialog.OnDateSetListener() { String fmonth, fDate; int month; @Override public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { try { if (monthOfYear < 10 && dayOfMonth < 10) { fmonth = "0" + monthOfYear; month = Integer.parseInt(fmonth) + 1; fDate = "0" + dayOfMonth; String paddedMonth = String.format("%02d", month); editText.setText(fDate + "/" + paddedMonth + "/" + year); } else { fmonth = "0" + monthOfYear; month = Integer.parseInt(fmonth) + 1; String paddedMonth = String.format("%02d", month); editText.setText(dayOfMonth + "/" + paddedMonth + "/" + year); } } catch (Exception e) { e.printStackTrace(); } } }, mYear, mMonth, mDay); datePickerDialog.getDatePicker().setMaxDate(System.currentTimeMillis()); datePickerDialog.show(); } });