Android DataPickerDialog组建只显示年月或月日

   最近几天再做一个App开发,开发时需要使用DatePickerDialog来只显示年月,在网上参考了不少的例子,有的自己琢磨不透,所幸看到了(这里请参考http://whb198900.blog.163.com/blog/static/766453542012108111920879)这位朋友的文章以及http://download.csdn.net/detail/u010372772/6027761这里边的代码,自己又进行了总结,总之,完成了自己的任务。

  1 public class SecondActivity extends Activity implements OnClickListener {
  2     /** Called when the activity is first created. */
  3     private Button button;
  4     private EditText textview;
  5     private Dialog mdialog;
  6     private Calendar calendar = null;
  7
  8     @Override
  9     public void onCreate(Bundle savedInstanceState) {
 10         super.onCreate(savedInstanceState);
 11         requestWindowFeature(Window.FEATURE_NO_TITLE);
 12         setContentView(R.layout.second);
 13
 14         initUi();
 15         button.setOnClickListener(this);
 16     }
 17
 18     public void initUi() {
 19         button = (Button) findViewById(R.id.show);
 20         textview = (EditText) findViewById(R.id.editText);
 21     }
 22
 23     @Override
 24     public void onClick(View v) {
 25         // TODO Auto-generated method stub
 26         showDialog(0);// 日期弹出框
 27         int SDKVersion = SecondActivity.this.getSDKVersionNumber();// 获取系统版本
 28         System.out.println("SDKVersion = " + SDKVersion);
 29         DatePicker dp = findDatePicker((ViewGroup) mdialog.getWindow()
 30                 .getDecorView());// 设置弹出年月日
 31         if (dp != null) {
 32             if (SDKVersion < 11) {
 33                 ((ViewGroup) dp.getChildAt(0)).getChildAt(1).setVisibility(
 34                         View.GONE);
 35             } else if (SDKVersion > 14) {
 36                 //只显示年月
 37                 ((ViewGroup) ((ViewGroup) dp.getChildAt(0)).getChildAt(0))
 38                         .getChildAt(1).setVisibility(View.GONE);//.getChildAt(0)
 39                 //只显示年日
 40 //                ((ViewGroup) ((ViewGroup) dp.getChildAt(0)).getChildAt(0))
 41 //                .getChildAt(2).setVisibility(View.GONE);
 42                 //只显示年月
 43 //                ((ViewGroup) ((ViewGroup) dp.getChildAt(0)).getChildAt(0))
 44 //                .getChildAt(1).setVisibility(View.GONE);
 45                 //显示月日
 46 //                ((ViewGroup) ((ViewGroup) dp.getChildAt(0)).getChildAt(0))
 47 //                .getChildAt(0).setVisibility(View.GONE);
 48             }
 49         }
 50
 51     }
 52
 53     @Override
 54     protected Dialog onCreateDialog(int id) { // 对应上面的showDialog(0);//日期弹出框
 55         mdialog = null;
 56         switch (id) {
 57         case 0:
 58             calendar = Calendar.getInstance();
 59             mdialog = new DatePickerDialog(this,
 60                     new DatePickerDialog.OnDateSetListener() {
 61                         @Override
 62                         public void onDateSet(DatePicker view, int year,
 63                                 int monthOfYear, int dayOfMonth) {
 64                             textview.setText(year + "-" + (monthOfYear));
 65                         }
 66                     }, calendar.get(Calendar.YEAR),
 67                     calendar.get(Calendar.MONTH),
 68                     calendar.get(Calendar.DAY_OF_MONTH));
 69             break;
 70         }
 71         return mdialog;
 72     }
 73
 74     /**
 75      * 从当前Dialog中查找DatePicker子控件
 76      *
 77      * @param group
 78      * @return
 79      */
 80     private DatePicker findDatePicker(ViewGroup group) {
 81         if (group != null) {
 82             for (int i = 0, j = group.getChildCount(); i < j; i++) {
 83                 View child = group.getChildAt(i);
 84                 if (child instanceof DatePicker) {
 85                     return (DatePicker) child;
 86                 } else if (child instanceof ViewGroup) {
 87                     DatePicker result = findDatePicker((ViewGroup) child);
 88                     if (result != null)
 89                         return result;
 90                 }
 91             }
 92         }
 93         return null;
 94     }
 95
 96     /**
 97      * 获取系统SDK版本
 98      *
 99      * @return
100      */
101     public static int getSDKVersionNumber() {
102         int sdkVersion;
103         try {
104             sdkVersion = Integer.valueOf(android.os.Build.VERSION.SDK);
105         } catch (NumberFormatException e) {
106             sdkVersion = 0;
107         }
108         return sdkVersion;
109     }
110 }

有什么不足之处,请多多指教!!!2015-3-30

时间: 2024-08-13 10:16:51

Android DataPickerDialog组建只显示年月或月日的相关文章

extjs 时间控件只显示年月

调用代码一: [javascript] view plain copy print ? var monthField = new Ext.ux.MonthField({ id:'month', fieldLabel: '月份', allowBlank:false, readOnly : true, format:'Y年m月', listeners:{"blur":function(){ alert() }} ); 调用代码二(部分): [javascript] view plain c

wpf 时间控件只显示年月

最近的项目,查询时只需要年和月,不需要日,因此需要对原有的DatePicker进行修改,查询了网上的内容,最终从一篇帖子里看到了添加附加属性的方法,地址是http://stackoverflow.com/questions/1798513/wpf-toolkit-datepicker-month-year-only 原文是用了两个类,其中一个是为了让DatePicker下的Calendar只显示年月,不显示日,另一个类是为了让DatePicker格式化为yyyy-MM格式,但是从文章中可以看出,

zui框架配置日期控件只显示年月

zui框架配置日期控件datetimepicker只显示年月 <!DOCTYPE html> <head> <script src="~/Scripts/jquery-1.11.3.min.js"></script> <script src="~/res/zui-1.9.1-dist/dist/js/zui.min.js"></script> <script src="~/res

easyui datebox 扩展 只显示年月

一个日期控件只显示年月是很正常的事情.可是easyui datebox 不支持这种格式的,要么就是截取字符串,不可取,自己没有写过类似的扩展,但是也算是实现功能了,先来张图吧 本人水平有限写不出高深的东西,代码大家都能看懂,但是还是贡献出来,让大家提提意见共同进步吧 $.extend($.fn.combobox.methods, { yearandmonth: function (jq) { return jq.each(function () { var obj = $(this).combo

easyui的datebox只显示年月

要求点击easyui的datebox时只显示年月,隐藏日,之前百度了好多,发现有的好麻烦,有的使用没效果,也许自己没理解,改不了.最后老员工帮我搞定了,添加一个fomatter和一个parser函数就行. 当然我学习到的一点就是调试,之前只会用类似alert和console.info进行调试,然而这两种方法对easyui中的这种方法不奏效,比我我想知道parser中的function中的参数date值到底是什么,用这两种方法是没用的,用console.log(date);就可以看到date的值,

easyui datebox 只显示年月

在网上看了好多的js源码 点击12月份都会变成2017-0 这样的 调试后发现了问题,在此发修改后的方法 //只显示年月 function convertDatebox(domId) { $("#" + domId).datebox({ onShowPanel: function () {//显示日趋选择对象后再触发弹出月份层的事件,初始化时没有生成月份层 span.trigger('click'); //触发click事件弹出月份层 if (!tds) setTimeout(func

easyui datebox只显示年月隐藏日期的实现

工作中两次遇到需要实现只实现年月的时间控件效果,特地把网上查到的实现方法记录下来,以备再次需要时用到.上代码 var dateobj=function(obj){ var need_obj={ onShowPanel: function () {//显示日趋选择对象后再触发弹出月份层的事件,初始化时没有生成月份层 span.trigger('click'); //触发click事件弹出月份层 if (!tds) setTimeout(function () {//延时触发获取月份对象,因为上面的

JQuery EasyUI 日期控件 怎样做到只显示年月,而不显示日

标题问题的答案在OSChina中 http://www.oschina.net/question/2282354_224401?fromerr=lHJTcN89 我还是把这个记录下来 ================================================================= <input id="dlgReleaseTime" class="easyui-datebox"></input> $('#dl

Android 百度地图只显示 网格?

最近写百度地图,显示的 时候 只显示 我那个不显示具体的数据? 这是为什么呢? 原来是因为:  自己的Key错了. Key 是唯一的: 之前的 Key : 是  MD5 :包名 这是错误的格式! Key : 应该是  SHA1 ; 包名: 解决方案: 创新建一个 APP .重新设置 Key!