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

转载于:https://www.cnblogs.com/mengyan1124/p/4378621.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
public class Android_DateActivity extends Activity implements OnClickListener { /** Called when the activity is first created. */ private Button button; private TextView textview; private Dialog mdialog; private Calendar calendar = null; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.main); initUi(); button.setOnClickListener(this); } public void initUi() { button = (Button) findViewById(R.id.button); textview = (TextView) findViewById(R.id.textview); } @Override public void onClick(View v) { // TODO Auto-generated method stub showDialog(0);// 期弹出框 int SDKVersion = Android_DateActivity.this.getSDKVersionNumber();// 获取系统版本 System.out.println("SDKVersion = " + SDKVersion); DatePicker dp = findDatePicker((ViewGroup) mdialog.getWindow() .getDecorView());// 设置弹出 if (dp != null) { if (SDKVersion 14) { ((ViewGroup) ((ViewGroup) dp.getChildAt(0)).getChildAt(0)) .getChildAt(1).setVisibility(View.GONE); } } } @Override protected Dialog onCreateDialog(int id) { // 对应上面的showDialog(0);//期弹出框 mdialog = null; switch (id) { case 0: calendar = Calendar.getInstance(); mdialog = new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener() { @Override public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { textview.setText(year + "-" + (monthOfYear + 1)); } }, calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH)); break; } return mdialog; } /** * 从当前Dialog中查找DatePicker子控件 * * @param group * @return */ private DatePicker findDatePicker(ViewGroup group) { if (group != null) { for (int i = 0, j = group.getChildCount()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值