androidandroid-datepicker

Datepicker: How to popup datepicker when click on edittext


I want to show datepicker popup window. I have found some examples but i am not getting it properly. I have one edittext and i want that when i click on edittext the datepicker dialog should popup and after setting the date, the date should show in edittext in dd/mm/yyyy format. PLease provide me sample code or good links.


Solution

  • Try this in the XML file:

    <EditText
        android:id="@+id/Birthday"
        custom:font="@string/font_avenir_book"
        android:clickable="false" 
        android:cursorVisible="false" 
        android:focusable="false" 
        android:focusableInTouchMode="false"
        android:hint="@string/birthday"/>
    

    And this in the Java File:

    public class MainActivity extends AppCompatActivity {
        final Calendar myCalendar= Calendar.getInstance();
        EditText editText;
        
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            editText=(EditText) findViewById(R.id.BirthDate);
            DatePickerDialog.OnDateSetListener date =new DatePickerDialog.OnDateSetListener() {
                @Override
                public void onDateSet(DatePicker view, int year, int month, int day) {
                    myCalendar.set(Calendar.YEAR, year);
                    myCalendar.set(Calendar.MONTH,month);
                    myCalendar.set(Calendar.DAY_OF_MONTH,day);
                    updateLabel();
                }
            };
            editText.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    new DatePickerDialog(MainActivity.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";
            SimpleDateFormat dateFormat=new SimpleDateFormat(myFormat, Locale.US);
            editText.setText(dateFormat.format(myCalendar.getTime()));
        }
    }
    

    Add android:focusable="false" within the xml file of the EditText to allow for a single touch.