zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    python 报错 AttributeError: 'Series' object has no attribute 'as_matrix'
    python 报错 NameError: name 'xrange' is not defined
    python报错 AxisError: axis 0 is out of bounds for array of dimension 0
    Python 列表中的浅拷贝与深拷贝
    python列表中查找元素
    Python中两个变量交换
    Python中*和**的使用
    Airtest启动报错:ERROR:gup_process_transport_factory.cc<1019>] Lost UI share context
    adb的使用
    Python函数
  • 原文地址:https://www.cnblogs.com/mengyan1124/p/4378621.html
Copyright © 2011-2022 走看看