`
gegaosong
  • 浏览: 37893 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

Android DatePicker(源码分析) 手工输入,没法获取值

阅读更多

    由于需求需要自定义Dialog背景色,所有没有采用DatePickerDialog,自己写了个自定义的Dialog,问题随之而来,手工编辑的日期,点击确定却没法获取输入的值,查阅了一下源码,原来很简单就是个焦点的问题。

DatePicker中Edittext,是封装在NumberPicker中的,当焦点变化时,进行文本设置

OnFocusChangeListener focusListener = new OnFocusChangeListener() {

            public void onFocusChange(View v, boolean hasFocus) {

                /* When focus is lost check that the text field
                 * has valid values.
                 */
                if (!hasFocus) {
                    validateInput(v);
                }
            }
        };
    private void validateInput(View v) {
        String str = String.valueOf(((TextView) v).getText());
        if ("".equals(str)) {

            // Restore to the old value as we don't allow empty values
            updateView();
        } else {

            // Check the new value and ensure it's in range
            validateCurrentView(str);
        }
    }

 

用DatePickerDialog输入的为什么可以呢?

 

    public void onClick(DialogInterface dialog, int which) {
        if (mCallBack != null) {
//注意此处,当点击事件发生的时候,会clear焦点,触发文本校验
            mDatePicker.clearFocus();
            mCallBack.onDateSet(mDatePicker, mDatePicker.getYear(),
                    mDatePicker.getMonth(), mDatePicker.getDayOfMonth());
        }
    }

 

所以解决方法很简单,在onclick中加一句clearFocus()即可

分享到:
评论
3 楼 gegaosong 2013-01-30  
gegaosong 写道
你的年月日不变,是不会触发这个事件的,你可以在点击确定的时候,clearFocus(),这个方法应该就会被调用了

wenjiefeng 写道
楼主,遇到同样的问题,你写的这个没看懂怎么该,我写的监听事件是
datepicker.init(datepicker.getYear(), datepicker.getMonth(),
datepicker.getDayOfMonth(), new OnDateChangedListener() {
@Override
public void onDateChanged(DatePicker view, int year,
int monthOfYear, int dayOfMonth) {
datepicker.clearFocus();
mYear = year;
mMonth = monthOfYear;
mDay = dayOfMonth;
Log.i("test", "---000--年-月-日--"
+mYear+"-"+mMonth+"-"+mDay);
}
});
没有获得监听呢?

还需要改哪里吗??


没有获得监听是因为数据没有变化,所以不会调用
2 楼 gegaosong 2013-01-30  
你的年月日不变,是不会触发这个事件的,你可以在点击确定的时候,clearFocus(),这个方法应该就会被调用了
1 楼 wenjiefeng 2013-01-28  
楼主,遇到同样的问题,你写的这个没看懂怎么该,我写的监听事件是
datepicker.init(datepicker.getYear(), datepicker.getMonth(),
datepicker.getDayOfMonth(), new OnDateChangedListener() {
@Override
public void onDateChanged(DatePicker view, int year,
int monthOfYear, int dayOfMonth) {
datepicker.clearFocus();
mYear = year;
mMonth = monthOfYear;
mDay = dayOfMonth;
Log.i("test", "---000--年-月-日--"
+mYear+"-"+mMonth+"-"+mDay);
}
});
没有获得监听呢?

还需要改哪里吗??

相关推荐

    Android应用源码之DatePicker.zip

    通过分析源码,我们可以了解`DatePicker`的内部结构,从而更有效地实现自定义需求。 总的来说,`Android应用源码之DatePicker.zip`提供了深入了解`DatePicker`工作原理的机会。通过学习源码,开发者不仅可以掌握`...

    Android应用源码之DatePicker_应用.zip

    总之,“Android应用源码之DatePicker_应用”源码应该包含以上所述的`DatePicker`使用示例,通过查看和分析这些源代码,开发者可以更好地理解和实践如何在实际项目中有效利用`DatePicker`。对于初学者来说,这是一个...

    Android DatePicker,NumPicker解析(分割线颜色及调整大小)

    在Android开发中,`DatePicker`和`NumPicker`是两种常用的UI组件,它们分别用于日期选择和数值选择。本文将详细解析如何自定义`DatePicker`的分割线颜色以及调整`NumPicker`的大小,帮助开发者打造更加个性化和美观...

    Android DatePicker 自定义日期控件

    然而,系统默认的`DatePicker`样式可能无法满足所有设计需求,这时就需要对其进行自定义,以适应不同的应用界面风格。本文将深入探讨如何在Android中自定义`DatePicker`控件,并通过`DateSlider`这个示例来详细讲解...

    自定义DatePicker样式

    本篇将详细介绍如何在Android中自定义DatePicker的样式,并针对中兴U880手机及不同Android系统版本可能遇到的问题进行分析。 【描述】中兴U880设备已经成功测试了自定义DatePicker的功能,表明该方案在Android 2.0...

    Android DatePicker Demo

    在Android开发中,`DatePicker`组件是用于让用户选择日期的常用控件,它提供了一个日历视图,用户可以通过滑动来选取年、月和日。`Android DatePicker Demo`是一个典型的示例,它展示了如何在应用程序中集成和使用`...

    Android 学习(9)DatePicker

    在Android开发中,`DatePicker`是一个非常常用的控件,它允许用户选择日期,通常用于设置生日、纪念日等与日期相关的事件。在这个Android学习的第九个程序中,我们将深入探讨`DatePicker`的使用方法和相关知识点。 ...

    Android中DatePicker只显示年月

    在Android开发中,`DatePicker`是用于让用户选择日期的一个组件,通常显示年、月、日三个部分。然而,根据你的需求,你希望`DatePicker`仅显示年份和月份,而不包含日期部分。这个功能可以用来让用户选择特定的年份...

    Android自定义DatePicker 以及 TimePicker

    // 获取DatePicker的值 int year = datePicker.getYear(); int month = datePicker.getMonth(); int day = datePicker.getDayOfMonth(); // 执行相关逻辑 // 监听TimePicker的值变化 timePicker....

    Android控件DatePicker的基本用法例程

    `DatePicker`通常用于日历功能或者需要用户输入日期的场景。本教程将深入讲解`DatePicker`的基本用法,帮助开发者更好地理解和应用这个控件。 ### 1. `DatePicker`概述 `DatePicker`控件是Android提供的一个标准UI...

    13-android DatePicker 日期选择器组建

    ### `DatePicker`源码分析 `DatePicker`的实现涉及到多个内部类,如`CalendarView`和`DatePickerDelegate`。`DatePickerDelegate`负责处理大部分逻辑,包括更新日期、监听日期改变事件等。`CalendarView`则是一个...

    My97DatePicker使用 日期获取

    【My97DatePicker使用 日期获取】 My97 DatePicker是一款非常流行的JavaScript日期选择插件,尤其在Web开发中被广泛使用。它提供了丰富的自定义功能和友好的用户界面,使得在网页上处理日期输入变得更加简单。本文...

    Android自定义DatePicker

    Android自定义的DatePicker,可以设置年、月、日之间间隔的宽度,并且可以修改分隔线的颜色,详见本人博客《更改DatePicker中年月日的间隔和分隔线颜色》

    android datepicker只显示年和日期

    `源码`标签暗示了博主可能深入到`DatePicker`的内部工作原理,分析了它的代码结构,寻找能够隐藏月份部分的方法。而`工具`标签则可能意味着博主可能利用了一些辅助工具或库来简化这一过程。 在实现这个功能时,...

    Android学习笔记17:中级视图组件DatePicker和TimePicker

    在Android应用开发中,中级视图组件如DatePicker和TimePicker是构建用户界面的重要部分,用于获取用户的日期和时间输入。这两个组件提供了用户友好的界面,让用户可以方便地选择日期和时间,常见于日历应用、事件...

    Android Studio DatePicker和TimePicker的使用

    Android Studio 中的 DatePicker 和 TimePicker 组件使用详解 Android Studio 是 Google 官方推出的 Android 应用程序集成开发环境(IDE),提供了许多实用的组件和工具来帮助开发者快速构建高质量的 Android 应用...

    android datepicker和timepicker,自由组合日期显示

    可自由组合时间(例如年月日,时分,年月日时分,年月日时等); 定义初始时间,限定时间范围;

    Android应用源码之5.EditText控件学习.zip

    在Android开发中,EditText控件是用户界面设计中不可或缺的一部分,它允许用户输入文本,广泛应用于登录、注册、编辑个人信息等各种场景。这份"Android应用源码之5.EditText控件学习.zip"的压缩包资料,很显然是为了...

    Android中的DatePicker和TimePicker控件使用

    在Android开发中,`DatePicker`和`TimePicker`控件是用于用户选择日期和时间的常见组件,它们通常以对话框的形式展现,提供便捷的交互方式。本文将深入讲解这两个控件的使用方法、功能特性以及如何在实际应用中集成...

    Eclipse 开发 Android, Hello, DatePicker (学习7)

    在本教程中,我们将深入探讨如何使用Eclipse IDE进行Android应用开发,并专注于创建一个简单的"Hello, DatePicker"示例。Eclipse是Java开发者常用的集成开发环境,而在Android开发领域,它曾是主流的选择,尽管现在...

Global site tag (gtag.js) - Google Analytics