마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

DatePicker 년월일-> 년월 수정 질문드립니다.

0 추천

기존 DatePicker 입니다. 년월일 다이어로그가 뜨고 클릭하였을시 우측과 같이 구현됩니다.

하지만 제가 하고 싶은 것은

이와 같이 년월 다이어로그만 출력 하고 싶습니다. (위 그림은 그림판으로 수정한 것입니다.

그러기에 두번째 그림은 공백이 있음..)

단순히 mDay변수만 삭제 한다고 해결 되는게 아닌듯 싶네요. 

해결해주시면 감사하겠습니다!

코드 나갑니다. 

package com.andro;

import java.util.Calendar;

import android.app.Activity;
import android.app.DatePickerDialog;
import android.app.Dialog;
import android.os.Bundle;
import android.view.View;
import android.widget.DatePicker;
import android.widget.TextView;

public class DatePickerActivity extends Activity {
	private TextView mDateDisplay;    
	private int mYear;    
	private int mMonth;    
	private int mDay;    
	static final int DATE_DIALOG_ID = 0;
	
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        //// Date Picker: 시작  ////////////
        // (1) main.xml의 레이아웃에 배치된 날짜 입력을 위한 TextView 인식          
        mDateDisplay = (TextView) findViewById(R.id.edit_birthday);        
        // (2) 인식된 TextView에 click listener 추가
        mDateDisplay.setOnClickListener(new View.OnClickListener() {  
        	// (5) 클릭되면 실행  
        	public void onClick(View v) {   
        		// (6) 날짜 설정을 위한 다이어로그 출력
        		showDialog(DATE_DIALOG_ID);            
        	}        
        });        
        // (3) 현재 날짜 인식         
        final Calendar c = Calendar.getInstance();        
        mYear = c.get(Calendar.YEAR);        
        mMonth = c.get(Calendar.MONTH);        
        mDay = c.get(Calendar.DAY_OF_MONTH);        
        // (4) 인식된 날짜를  출력        
        updateDisplay();        
        //// Date Picker: 끝  ////////////
    }
    
    // (7) 다이어로그 출력시 DatePicker 다이어로그 출력 
    @Override
    protected Dialog onCreateDialog(int id) {    
    	switch (id) {    
	    	case DATE_DIALOG_ID:        
	    		return new DatePickerDialog(this, mDateSetListener, mYear, mMonth, mDay);    
    	}    
    	return null;
   	}    
    
    // (8) 다이어로그에 있는 날짜를 설정(set)하면 실행됨
    private DatePickerDialog.OnDateSetListener mDateSetListener =            
    	new DatePickerDialog.OnDateSetListener() {                
    	    public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {                    
    		    mYear = year;                    
    		    mMonth = monthOfYear;                    
    		    mDay = dayOfMonth;
    		    // 사용자가 지정한 날짜를 출력 
    		    updateDisplay();                
    		}            
    	};    
    
    // 설정된 날짜를 TextView에 출력     
    private void updateDisplay() {   
    	//main.xml의 레이아웃에 배치된 날짜 입력 TextView에 인식된 날짜 출력     
    	mDateDisplay.setText(            
    		new StringBuilder()                    
    		// 월은 시스템에서 0~11로 인식하기 때문에 1을 더해줌
    		.append(mYear).append("-")
    		.append(mMonth + 1).append("-")                    
    		.append(mDay).append(" "));
    }   
}

 

불꽃남자 v (120 포인트) 님이 2013년 5월 14일 질문

1개의 답변

0 추천

http://www.integralus.com/2012/05/android-datepickerdialog-yearmonth-day.html

 

try {
 DatePickerDialog datePickerDialog = new DatePickerDialog(AC_RecordMain.this, onDateSetListener, 2012, 5, 2);
      
 Field[] f = datePickerDialog.getClass().getDeclaredFields();
 for (Field dateField : f) {
  if(dateField.getName().equals("mDatePicker")) {
   dateField.setAccessible(true);
         
   DatePicker datePicker = (DatePicker)dateField.get(datePickerDialog);
         
   Field datePickerFields[] = dateField.getType().getDeclaredFields();
         
   for(Field datePickerField : datePickerFields) {
    if("mDayPicker".equals(datePickerField.getName())) {
     datePickerField.setAccessible(true);
     Object dayPicker = new Object();
     dayPicker = datePickerField.get(datePicker);
     ((View)dayPicker).setVisibility(View.GONE);
    }
   }
  }
 }
      
 datePickerDialog.show();
     
}
catch (IllegalArgumentException e) {
 e.printStackTrace();
}
catch (IllegalAccessException e) {
 e.printStackTrace();
}

 

aucd29 (218,390 포인트) 님이 2013년 5월 15일 답변
...