我正在我的应用程序中实现 DatePickerDialog,我的问题是当我尝试更改“日”时,软键盘会弹出并显示数字,而插入符号位于数字之前。当我单击数字时,它不会替换“日”框中已有的内容。仅当我转到 Day 框中数字的末尾并将其删除(软键盘中的退格键)然后输入数字时,它才有效。
为什么会这样?为什么它不覆盖已经存在的内容?
此代码显示对话框:
protected Dialog onCreateDialog(int id)
{
Dialog ReturnDialog = null;
switch (id)
{
case DATE_DIALOG_ID:
ReturnDialog = new DatePickerDialog(this, mDateSetListener, Year, Month - 1, Day );
break;
}
return ReturnDialog;
}
然后我从 onClickListener() 调用它
showDialog( DATE_DIALOG_ID );
我做错了什么?
最佳答案
您看到的是(我认为)正常行为。 DatePickerDialog
由单个 DatePicker
小部件组成,该小部件由每个日期部分(日、月、年)的三个 NumberPicker
小部件组成。这些 NumberPicker
由 ImageViews
和作为输入区域的 EditText
组成。单击 EditText
以显示用于输入数据/文本的键盘不会删除旧数据,因此行为正常。
你将很难覆盖此行为,特别是如果你计划覆盖旧的 android 版本,因为你将无法访问输入 EditTexts
。例如,您无法在旧版 Android 上访问对话框的 DatePicker
小部件,访问此小部件的方法最近才添加到 DatePickerDialog
(在 Honeycomb
,API 版本 11)。
当然,您可以选择重新创建 DatePickerDialog
来实现该行为,但我认为这不值得付出努力。
关于android - DatePickerDialog软键盘类型无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10564142/