1. 程式人生 > >android 修改DatePickerDialog只顯示“年月”,去掉“日”顯示

android 修改DatePickerDialog只顯示“年月”,去掉“日”顯示

if(Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB){
  //查詢DatePicker
			DatePicker dp = findDatePicker((ViewGroup) getWindow().getDecorView()); 
			
			//獲取其子控制元件,包含 年、月、日
			ViewGroup view0 = (ViewGroup)((ViewGroup) dp.getChildAt(0)).getChildAt(0);
			ViewGroup view1 = (ViewGroup)((ViewGroup) dp.getChildAt(0)).getChildAt(1);
			ViewGroup view2 = (ViewGroup)((ViewGroup) dp.getChildAt(0)).getChildAt(2);
			
			//獲取子控制元件中的EditText顯示控制元件(就是中間顯示年月日的)
			EditText et0 = (EditText)view0.getChildAt(1);
			EditText et1 = (EditText)view1.getChildAt(1);
			EditText et2 = (EditText)view2.getChildAt(1);

			//獲取當前日
	        int dayOfMonth = dp.getDayOfMonth();
	        
	        //獲取三個顯示控制元件的值
	        String str0 = et0.getText().toString().trim();
	        String str1 = et1.getText().toString().trim();
	        String str2 = et2.getText().toString().trim();
	        
	        //進行匹配,如果和當前日的值相同,則隱藏它 ( BUG:若初始化值為5月5號,可能會出錯)
	        //一般情況下 年-月-日 或者 月-日-年情況比較常見,所以先比較str[2]->str[1]->str[0],降低出錯概率
	        if((""+dayOfMonth).equals(str2)){
	        	view0.setVisibility(View.GONE);
	        }else if((""+dayOfMonth).equals(str1)){
	        	view1.setVisibility(View.GONE);
	        }else if((""+dayOfMonth).equals(str0)){
	        	view2.setVisibility(View.GONE);
	        }
		}