Android,有啥方法可以禁用使用键盘在日期选择器内写入?

Posted

技术标签:

【中文标题】Android,有啥方法可以禁用使用键盘在日期选择器内写入?【英文标题】:Android, is there any way to disable writing inside a date picker using keyboard?Android,有什么方法可以禁用使用键盘在日期选择器内写入? 【发布时间】:2012-11-08 10:20:17 【问题描述】:

有什么方法可以禁止使用键盘在日期选择器中写入?因为我只想使用加号和减号来设置日期。 提前致谢。

【问题讨论】:

你为什么打算打破默认的用户交互?预期的行为不再起作用,它会混淆和/或惹恼您的用户...... 因为我对用户的输入日期有限制 所以在用户选择新日期后检查输入日期是否符合您的限制,并在不符合时通知用户... 【参考方案1】:
myDatePicker.setDescendantFocusability(DatePicker.FOCUS_BLOCK_DESCENDANTS);

【讨论】:

如果 API 级别低于 11,您知道如何为 DatePickerDialog 执行此操作吗? 不确定让我今天晚些时候有机会尝试一下 @Antigona 试试这个:myDatePickerDialog.getDatePicker().setDescendantFocusability(DatePicker.FOCUS_BLOCK_DESCENDANTS);【参考方案2】:
dp.setDescendantFocusability(DatePicker.FOCUS_BLOCK_DESCENDANTS);

是最好的方法。

你也可以检查一下

Focusable EditText inside ListView

【讨论】:

【参考方案3】:
Calendar start = Calendar.getInstance();

            int Year = DatePicker.getYear();
            int Month = DatePicker.getMonth();
            int Day = DatePicker.getDayOfMonth();

            start.set(Year, Month, Day);
    //      DayDatePicker.setDescendantFocusability(DatePicker.FOCUS_BLOCK_DESCENDANTS);

            Date periodDate = start.getTime();
            int daysToAdd = 280;
            Calendar cal = Calendar.getInstance();

cal.add(Calendar.DAY_OF_MONTH,daysToAdd );
            System.err.println("-----" +cal.getTime());
            int AfterCalc = cal.getTime().getYear()+1900;
            System.err.println("-----" + AfterCalc);
            int AfterCalc2 = cal.getTime().getMonth();
            System.err.println("----" + AfterCalc2);

【讨论】:

【参考方案4】:

DatePickerDialog 项中停止手动编辑的最佳选项是使用设置 descendantFocusability 。您可以在代码或对话框样式文件中添加它。

Here is the implementation using style

【讨论】:

以上是关于Android,有啥方法可以禁用使用键盘在日期选择器内写入?的主要内容,如果未能解决你的问题,请参考以下文章

在 Android 日期选择器中禁用特定日期

在移动设备上禁用 Bootstrap 日期选择器的键盘弹出窗口(Rails 4,Jquery)

禁用日期范围内的键盘输入闪亮

禁用输入,允许点击文本框

在输入文本字段中禁用键盘

有啥方法可以禁用/启用我的 iphone 应用程序的通知