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

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

【问题讨论】:

  • 你为什么打算打破默认的用户交互?预期的行为不再起作用,它会混淆和/或惹恼您的用户......
  • 因为我对用户的输入日期有限制
  • 所以在用户选择新日期后检查输入日期是否符合您的限制,并在不符合时通知用户...

标签: android datepicker


【解决方案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

      【讨论】:

        猜你喜欢
        • 2021-05-04
        • 2015-12-24
        • 1970-01-01
        • 2022-01-12
        • 1970-01-01
        • 2014-11-17
        • 2023-03-10
        • 2016-06-06
        • 1970-01-01
        相关资源
        最近更新 更多