android - DatePickerDialog软键盘类型无效

标签 android date

我正在我的应用程序中实现 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 小部件组成。这些 NumberPickerImageViews 和作为输入区域的 EditText 组成。单击 EditText 以显示用于输入数据/文本的键盘不会删除旧数据,因此行为正常。

你将很难覆盖此行为,特别是如果你计划覆盖旧的 android 版本,因为你将无法访问输入 EditTexts。例如,您无法在旧版 Android 上访问对话框的 DatePicker 小部件,访问此小部件的方法最近才添加到 DatePickerDialog(在 Honeycomb,API 版本 11)。

当然,您可以选择重新创建 DatePickerDialog 来实现该行为,但我认为这不值得付出努力。

关于android - DatePickerDialog软键盘类型无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10564142/

相关文章:

android - 哪个设备文件接收我在 Android 上注入(inject)的 key ?

android - 短时间内频繁更新一个widget可以吗?

android - 如何创建基于 Google Play 游戏的计算机对手

java - Android 注释自定义 View

ios - 在 Swift 中将日期从 GMT+1 转换为 UTC 时出现混淆

javascript - ng-model 传递的 Javascript 日期格式问题

javascript - 将新的 Date() 格式化为 EEE MMM dd HH :mm:ss zzz yyyy

android 获取联系人名字

google-chrome - HTML5 日期输入接受无效日期?

r - 在 R 中,使用 Lubridate 获取事件之间的条件平均持续时间