[Android]只显示月和日的DatePickerDialog

前言

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

声明

  欢迎转载,但请保留文章原始出处:)

    博客园:http://www.cnblogs.com

    农民伯伯: http://over140.cnblogs.com

正文

  一、效果图

    1.1 默认

    1.2 处理后

  二、实现代码

    2.1  代码片段1

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

}

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

    2.2  使用代码

final Calendarcal = Calendar.getInstance();
mDialog
= new CustomerDatePickerDialog(getContext(), this ,
cal.get(Calendar.YEAR),cal.get(Calendar.MONTH),
cal.get(Calendar.DAY_OF_MONTH));
mDialog.show();

DatePickerdp
= 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(Contextcontext,
OnDateSetListenercallBack,
int year, int monthOfYear,
int dayOfMonth){
super (context,callBack,year,monthOfYear,dayOfMonth);
}

@Override
public void onDateChanged(DatePickerview, int year, int month, int day){
super .onDateChanged(view,year,month,day);
mDialog.setTitle((month
+ 1 ) + " " + day + " " );
}
}

更多相关文章

  1. android TabHost(选项卡)的使用方法发布
  2. Android(安卓)7.0 AES加密报错:NoSuchProviderException: no such
  3. Android开发历程_6(RadioButton和CheckBox的使用)
  4. 【总结】Mac版Android(安卓)Studio常用快捷键总结
  5. Intent详解
  6. VMware下Android(安卓)x86无声音的解决办法
  7. Android学习笔记_4_单元测试
  8. 支付宝转账小demo(不需要库)
  9. 认识 android 中的 LayoutInflater

随机推荐

  1. 安卓开发学习之012 TextView高级应用
  2. Android(安卓)获取资源ID方法,SDK开发中
  3. android studio gradle自动签名构建实现
  4. android & Linux uevent机制
  5. Android应用程序设计——入门配置
  6. Android中字体颜色的设置
  7. Android下USB Accessory的实现分析
  8. android studio导入 so ,jar 文件。
  9. Android菜鸟的成长笔记(1)——Android开发
  10. App Inventor for Android - 大家都来写A