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

DatePickerDialog 修改,只显示月日,隐藏年

 
阅读更多
需求要只显示月和日的日历控件,又不想自定义控件,最简单的办法就是隐藏显示年的这个框了,但DatePickerDialog并没有直接提供方法来操作,这里分享一个笨办法:)

效果图:

默认


处理后


代码片段1
/**
     * 从当前Dialog中查找DatePicker子控件
     * 
     * @param group
     * @return
     */
    private DatePicker findDatePicker(ViewGroup group) {
        if (group != null) {
            for (int i = 0, j = group.getChildCount(); i < j; i++) {
                View child = group.getChildAt(i);
                if (child instanceof DatePicker) {
                    return (DatePicker) child;
                } else if (child instanceof ViewGroup) {
                    DatePicker result = findDatePicker((ViewGroup) child);
                    if (result != null)
                        return result;
                }
            }
        }
        return null;

    } 


代码说明:
        通过断点也看到Dialog的ContentView里有DatePicker子控件,这里通过遍历的办法来查找这个控件。


使用代码
final Calendar cal = Calendar.getInstance();
        mDialog = new CustomerDatePickerDialog(getContext(), this,
            cal.get(Calendar.YEAR), cal.get(Calendar.MONTH),
            cal.get(Calendar.DAY_OF_MONTH));
        mDialog.show();
        
        DatePicker dp = findDatePicker((ViewGroup) mDialog.getWindow().getDecorView());
        if (dp != null) {
            ((ViewGroup) dp.getChildAt(0)).getChildAt(0).setVisibility(View.GONE);

        } 


代码说明:

        通过源码可以看得到DatePicker内置三个NumberPicker控件,依次表示年、月、日,隐藏掉第一个即可。


补充
后续使用中发现标题栏也要改,通过查看DatePickerDialog源码,需要自定义并实现onDateChanged方法才可实现,如下代码:
class CustomerDatePickerDialog extends DatePickerDialog {

        public CustomerDatePickerDialog(Context context,
                OnDateSetListener callBack, int year, int monthOfYear,
                int dayOfMonth) {
            super(context, callBack, year, monthOfYear, dayOfMonth);
        }

        @Override
        public void onDateChanged(DatePicker view, int year, int month, int day) {
            super.onDateChanged(view, year, month, day);
            mDialog.setTitle((month + 1) + "月" + day + "日");
        }
    }
0
0
分享到:
评论
1 楼 liuxian13183 2012-02-14  
能不能把详细的代码或者demo发一下,jackie.new@163.com 谢谢!

相关推荐

    DatePickerDialog隐藏年月日

    标题中的“DatePickerDialog隐藏年月日”指的是在Android开发中,如何自定义DatePickerDialog以便仅显示日期选择器中的日部分,而隐藏年和月的选择。这通常涉及到对Android原生的DatePicker及其对话框的定制。 在...

    Android中DatePicker只显示年月

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

    Android自定义日期选择控件DatePickerDialog

    DatePickerDialog是Android系统提供的一个用于选择日期的对话框,它包含了年、月、日三个部分。默认情况下,用户可以通过滚轮选择相应的值。为了自定义这个控件,我们需要了解以下关键知识点: 1. **自定义布局**: ...

    android指定DatePickerDialog样式并不显示年的实现代码

    而且很多的时候都不需要显示“年”,下面看通过指定主题来显示自己想要的样式,并且通过反射机制来隐藏“年”,而且可以举一反三,对这上面的东西做任务的修改。 private void showDatePickerDialog() { Calendar...

    android日期选择器.rar

    - 通过`setCalendarViewShown(false)`可以隐藏内置的日历视图,只显示数字轮盘。 2. **TimePickerDialog**: - TimePickerDialog同样需要设置初始时间和是否显示24小时制。监听器为OnTimeSetListener,用户选择...

    android实现双日期选择控件(可隐藏日,只显示年月)

    我在开发中在DatePickerDialog的基础上做了修改,实现了这种Dialog。效果如下: 具体实现方法为: 先新建一个安卓项目DoubleDatePicker,在res/layout文件夹下新建date_picker_dialog.xml,内容如下: &lt;?xml ...

    使用DatePicker实现日历选择器及使用TimePicker实现时间选择器

    它通常包含年、月、日三个部分,用户可以通过滚动条选择特定的日期。要在布局文件中添加`DatePicker`,可以使用以下XML代码: ```xml android:id="@+id/date_picker" android:layout_width="wrap_content" ...

    Android 自定义 弹框,日期选择器 弹框,年月日,时分,

    在这个特定的场景中,我们讨论的是一个自定义的日期选择器弹框,它允许用户选取年、月、日以及时间(小时和分钟)。下面我们将深入探讨如何实现这样的功能。 首先,我们需要创建一个自定义 DialogFragment,它是...

    Android dialog 大合集源码

    在Android开发中,Dialog是一种非常重要的用户界面组件,它用于在主应用程序界面之上显示临时性的信息或者进行交互操作。这个“Android dialog 大合集源码”提供了多种对话框的实现,涵盖了Android编程中可能遇到的...

    所有Dialog对话框.zip

    在Android开发中,Dialog对话框是一种重要的用户交互组件,它用于在主应用程序界面之上显示临时的通知或提示,以便用户能够做出决策或输入信息。"所有Dialog对话框.zip"可能包含了一系列关于Android Dialog使用的...

    BaseDialog

    3. 对话框显示与隐藏:调用show()和dismiss()方法来控制对话框的显示和关闭。 4. 回调事件处理:BaseDialog可能包含了点击按钮或其他操作的回调接口,子类可以通过重写这些接口实现自己的业务逻辑。 5. 动画效果:...

    Android高级应用源码-基本的对话框.zip

    4. 对话框的生命周期:对话框的显示与隐藏可以通过show()和dismiss()方法控制,理解它们与Activity的关系,避免内存泄漏。 5. 处理对话框的点击事件:通过设置按钮的OnClickListener,可以响应用户的操作。 6. ...

    android 例子

    例如,显示警告信息或询问用户是否保存未保存的更改。 2. **ProgressDialog**(已废弃,建议使用Progress Bar):在执行耗时操作时显示一个进度条,给用户反馈操作的状态。可以是旋转的指示器或者水平的进度条。 3...

    Android 开发技巧

    5.4、滚动条显示与隐藏 143 5.5、LISTVIEW 与 SCROLLVIEW 解决办法 144 方法一:(重写ListView) 144 方法二: 150 5.6、3D魔方 151 6、ANDROID UI 动画 160 6.1、四种2D动画 160 6.1.1、透明度控制动画效果 alpha ...

Global site tag (gtag.js) - Google Analytics