10

This question has been asked before, but the answers from back then, doesn't seem to work in Android Studio anymore, or else i'm missing something.

I want a timePicker dialog to show up when you press the edit text area, to set the time in the editText. However, for some reason, the normal keyboard simply pops up when pressed. I'm not getting any errors, though it still doesn't seem to work.

here is the code:

final EditText Edit_Time = (EditText) findViewById(R.id.time_view_edit);

    Edit_Time.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            Calendar mcurrentTime = Calendar.getInstance();
            int hour = mcurrentTime.get(Calendar.HOUR_OF_DAY);
            int minute = mcurrentTime.get(Calendar.MINUTE);

            TimePickerDialog mTimePicker;
            mTimePicker = new TimePickerDialog(TimeActivity.this, new TimePickerDialog.OnTimeSetListener() {
                @Override
                public void onTimeSet(TimePicker timePicker, int selectedHour, int selectedMinute) {
                    Edit_Time.setText( selectedHour + ":" + selectedMinute);
                }
            }, hour, minute, true);
            mTimePicker.setTitle("Select Time");
            mTimePicker.show();

        }
    });

the xml part of editText:

<EditText
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/time_view_edit"
            android:text="20:00"
            android:layout_weight="1"/>

If anyone can help, then it's much appreciated, Thanks!

Pro Mode
  • 1,453
  • 17
  • 30

2 Answers2

11

Add these properties to your EditText tag in xml to disable keyboard popping up

android:editable="false" 

and

android:focusable="false"

UPDATE:

android:editable="false" is deprecated now. use android:inputType="none" instead or in the code:

editText.setEnabled(false);
Alireza Noorali
  • 3,129
  • 2
  • 33
  • 80
SripadRaj
  • 1,687
  • 2
  • 22
  • 33
  • 3
    thank you very much. this code helped me a lot. the only change that i made was android:editable="false" for android:inputType="time" because the android studio told me that function was deprecated. – JPCS Apr 27 '17 at 21:17
1

This worked for me on androidx projects. Create showTimePicker method.

    private void showTimePicker(){
        Calendar mcurrentTime = Calendar.getInstance();
        int hour = mcurrentTime.get(Calendar.HOUR_OF_DAY);
        int minute = mcurrentTime.get(Calendar.MINUTE);
        TimePickerDialog timePickerDialog = new TimePickerDialog(EditPharmacyActivity.this, new TimePickerDialog.OnTimeSetListener() {

            @Override
            public void onTimeSet(TimePicker timePicker, int selectedHour, int selectedMinute) {

            }
        }, hour, minute, false);
        timePickerDialog.show();
    }

And in onCreate method add followings to init the views.

        etOpenHours.setClickable(true);
        etOpenHours.setLongClickable(false);
        etOpenHours.setInputType(InputType.TYPE_NULL);

        etOpenHours.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
               
                showTimePicker();
            }
        });

emkarachchi
  • 750
  • 1
  • 7
  • 18