Search code examples
androidxmldatepickerdatetimepicker

Date and time picker in same dialogbox


How can I show Date picker and time picker in the same dialog box ? If I' using

<TimePicker
    android:id="@+id/timePicker1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />

<DatePicker
    android:id="@+id/datePicker1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />

what should be done on MainAcitiviy.java I'm new to android. I searched but didnt get anything,,


Solution

  • You can put both Date Picker and Time Picker in a layout XML: Referring this date_time_picker.xml

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:padding="8dp"
    android:layout_height="match_parent">
    
    <DatePicker
    android:id="@+id/date_picker"
    android:layout_width="match_parent"
    android:calendarViewShown="true"
    android:spinnersShown="false"
    android:layout_weight="4"
    android:layout_height="0dp" />
    
    <TimePicker
    android:id="@+id/time_picker"
    android:layout_weight="4"
    android:layout_width="match_parent"
    android:layout_height="0dp" />
    
    <Button
    android:id="@+id/date_time_set"
    android:layout_weight="1"
    android:layout_width="match_parent"
    android:text="Set"
    android:layout_height="0dp" />
    
    </LinearLayout>
    

    The code

        final View dialogView = View.inflate(activity, R.layout.date_time_picker, null);
    final AlertDialog alertDialog = new AlertDialog.Builder(activity).create();
    
    dialogView.findViewById(R.id.date_time_set).setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
    
             DatePicker datePicker = (DatePicker) dialogView.findViewById(R.id.date_picker);
             TimePicker timePicker = (TimePicker) dialogView.findViewById(R.id.time_picker);
    
             Calendar calendar = new GregorianCalendar(datePicker.getYear(),
        datePicker.getMonth(),
        datePicker.getDayOfMonth(),
         timePicker.getCurrentHour(),
                                timePicker.getCurrentMinute());
    
             time = calendar.getTimeInMillis();
             alertDialog.dismiss();
        }});
        alertDialog.setView(dialogView);
        alertDialog.show();