[Android]只显示月和日的DatePickerDialog

简介:

正文

  一、效果图

    1.1 默认

 

    1.2 处理后 

 

 

  二、实现代码

    2.1  代码片段1

 
  1. /** 
  2.  * 从当前Dialog中查找DatePicker子控件 
  3.  *  
  4.  * @param group 
  5.  * @return 
  6.  */ 
  7. private DatePicker findDatePicker(ViewGroup group) { 
  8.     if (group != null) { 
  9.         for (int i = 0, j = group.getChildCount(); i < j; i++) { 
  10.             View child = group.getChildAt(i); 
  11.             if (child instanceof DatePicker) { 
  12.                 return (DatePicker) child; 
  13.             } else if (child instanceof ViewGroup) { 
  14.                 DatePicker result = findDatePicker((ViewGroup) child); 
  15.                 if (result != null
  16.                     return result; 
  17.             } 
  18.         } 
  19.     } 
  20.     return null
  21.  
  22. }  
      代码说明:
通过断点也看到Dialog的ContentView里有DatePicker子控件,这里通过遍历的办法来查找这个控件。

 

    2.2  使用代码

 
  1. final Calendar cal = Calendar.getInstance(); 
  2. mDialog = new CustomerDatePickerDialog(getContext(), this
  3.     cal.get(Calendar.YEAR), cal.get(Calendar.MONTH), 
  4.     cal.get(Calendar.DAY_OF_MONTH)); 
  5. mDialog.show(); 
  6.  
  7. DatePicker dp = findDatePicker((ViewGroup) mDialog.getWindow().getDecorView()); 
  8. if (dp != null) { 
  9.     ((ViewGroup) dp.getChildAt(0)).getChildAt(0).setVisibility(View.GONE); 
  10.  
  11. }  

      代码说明:

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

 

 

    三、补充

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

 
 
  1. class CustomerDatePickerDialog extends DatePickerDialog { 
  2.  
  3.     public CustomerDatePickerDialog(Context context, 
  4.             OnDateSetListener callBack, int year, int monthOfYear, 
  5.             int dayOfMonth) { 
  6.         super(context, callBack, year, monthOfYear, dayOfMonth); 
  7.     } 
  8.  
  9.     @Override 
  10.     public void onDateChanged(DatePicker view, int year, int month, int day) { 
  11.         super.onDateChanged(view, year, month, day); 
  12.         mDialog.setTitle((month + 1) + "月" + day + "日"); 
  13.     } 

 

本文转自over140 51CTO博客,原文链接:http://blog.51cto.com/over140/669257,如需转载请自行联系原作者

相关文章
|
数据处理 Android开发
关于安卓glide加载显示进度
安卓glide加载显示进度
367 0
|
Android开发 C++
Android OpenGL显示任意3D模型文件
Android OpenGL显示任意3D模型文件
Android OpenGL显示任意3D模型文件
|
存储 缓存 Java
Android OpenGL 显示基本图形及相关概念解读
Android OpenGL 显示基本图形及相关概念解读
Android OpenGL 显示基本图形及相关概念解读
|
开发工具 Android开发
Android studio preview不显示
作为一个刚学习Android的小白,装Android studio的过程中就遇到了不少问题,这两天发现preview一直不显示,百度查了一下,很多教程都只是改了一下这里,但是治标不治本啊,新的项目又会出现这个问题。
244 0
Android studio preview不显示
|
XML 缓存 Android开发
Android Studio Dolphin | 2021.3.1不显示布局XML预览
Android Studio Dolphin | 2021.3.1不显示布局XML预览
1996 0
Android Studio Dolphin | 2021.3.1不显示布局XML预览
|
XML SQL 缓存
Android 音乐APP(四)显示专辑图片、本地数据库、自定义通知栏样式、通知栏显示
Android 音乐APP(四)显示专辑图片、本地数据库、自定义通知栏样式、通知栏显示
418 0
Android 音乐APP(四)显示专辑图片、本地数据库、自定义通知栏样式、通知栏显示
|
XML Android开发 数据格式
Android Glide加载网络图片不显示,但用网页打开又正常显示
Android Glide加载网络图片不显示,但用网页打开又正常显示
700 0
Android Glide加载网络图片不显示,但用网页打开又正常显示
|
XML 缓存 API
Android 天气APP(十四)修复UI显示异常、优化业务代码逻辑、增加详情天气显示
Android 天气APP(十四)修复UI显示异常、优化业务代码逻辑、增加详情天气显示
198 0
Android 天气APP(十四)修复UI显示异常、优化业务代码逻辑、增加详情天气显示
|
Android开发
Android 天气APP(六)旋转风车显示风力、风向
Android 天气APP(六)旋转风车显示风力、风向
159 0
Android 天气APP(六)旋转风车显示风力、风向
|
XML Android开发 数据格式
Android控件显示、隐藏时,增加动画效果
Android控件显示、隐藏时,增加动画效果
468 0
Android控件显示、隐藏时,增加动画效果