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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM