按EditText

时间:2016-09-22 08:50:21

标签: android android-studio android-edittext timepicker

之前已经问过这个问题,但是当时的答案似乎不再适用于Android Studio,或者我错过了一些东西。

我希望在按下编辑文本区域时显示timePicker对话框,以在editText中设置时间。但是,出于某种原因,正常键盘在按下时会弹出。我没有收到任何错误,但它似乎仍然无效。

这是代码:

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();

        }
    });

editText的xml部分:

<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"/>

如果有人可以提供帮助,那么非常感谢,谢谢!

2 个答案:

答案 0 :(得分:4)

将这些属性添加到xml中的EditText标记以禁用键盘弹出

android:editable="false" 

android:focusable="false"

<强>更新

android:editable="false"现已弃用。 改为使用android:inputType="none"或代码:

editText.setEnabled(false);

答案 1 :(得分:0)

这在androidx项目上为我工作。创建showTimePicker方法。

    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();
    }

然后在onCreate方法中添加以下内容以初始化视图。

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

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