按 EditText 时的 TimePicker 对话框
TimePicker Dialog when pressing EditText
以前有人问过这个问题,但当时的答案似乎不再适用于 Android Studio,否则我遗漏了什么。
我希望在您按下编辑文本区域时显示一个时间选择器对话框,以便在编辑文本中设置时间。但是,由于某种原因,普通键盘在按下时会弹出。我没有收到任何错误,但它似乎仍然不起作用。
代码如下:
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"/>
如果有人能提供帮助,那将不胜感激,谢谢!
将这些属性添加到 xml 中的 EditText
标记以禁用键盘弹出
android:editable="false"
和
android:focusable="false"
更新:
android:editable="false"
现在已弃用。
使用 android:inputType="none"
代替或在代码中使用:
editText.setEnabled(false);
这对我在 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();
}
});
以前有人问过这个问题,但当时的答案似乎不再适用于 Android Studio,否则我遗漏了什么。
我希望在您按下编辑文本区域时显示一个时间选择器对话框,以便在编辑文本中设置时间。但是,由于某种原因,普通键盘在按下时会弹出。我没有收到任何错误,但它似乎仍然不起作用。
代码如下:
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"/>
如果有人能提供帮助,那将不胜感激,谢谢!
将这些属性添加到 xml 中的 EditText
标记以禁用键盘弹出
android:editable="false"
和
android:focusable="false"
更新:
android:editable="false"
现在已弃用。
使用 android:inputType="none"
代替或在代码中使用:
editText.setEnabled(false);
这对我在 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();
}
});