프로그래밍/안드로이드

안드로이드 - DatePicker 위젯을 이용한 날짜 입력 받기

가카리 2015. 8. 8. 16:10
반응형

 

사용자로부터 날짜를 쉽게 입력 받으려면 DatePicker 위젯을 사용한다. 년, 월, 일을 각각의 버튼으로 보여주고 아래위의 증감 버튼을 눌러 값을 조정한다.

 

그리고 크기를 변경해봐야 무의미해서 wrap_content로 지정한다.

 

속성

설명

startYear, endYear

선택 가능한 년도의 범위를 지정한다.

minDate, maxDate

선택 가능한 날짜의 범위를 지정한다.

calendarViewShown

달력을 보여줄 것인지를 지정한다. 디폴트는 true이다.

spinnersShown

날짜를 선택하는 스피너를 보여줄 것인가를 지정한다.

 

날짜를 설정하거나 조사할 때는 다음 메소드를 호출한다.

 

void updateDate(int year, int monthOfYear, int dayOfMonth)

int getYear()

int getMonth()

getDayOfMonth()

 

updateDate 메소드는 첫 날짜를 초기화하며 get 메소드로 사용자가 조정한 값을 조사한다.

 

값이 변경될때마다 통지를 받고싶으면 이벤트 핸들러를 등록한다.

 

void init(int yar, int monthOfYear, int dayOfMonth, DatePicker.OnDateChangedListener onDateChangedListener)

 

사용자가 날짜를 편집하면 리스너의 다음 메소드가 호출되어 현재 편집된 값을 알려준다.

 

    void onDateChanged(DatePicker view, int year, int monOfYear, int dayOfMonth)

 

주의할 것은 월을 나타내는 monthOfYear가 0이 1월을 뜻하고 6은 7월을 뜻한다.

 

그러면 간단히 DatePicker 위젯을 만들어서 사용자가 움직이면 값을 TextView와 Toast메시지로 띄워보는 예제를 만들어 보자.

다음은 xml파일이다.

 

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

    android:orientation="vertical"

     >

    <DatePicker

     android:id="@+id/datepicker"

     android:layout_width="wrap_content"

     android:layout_height="wrap_content"

     android:calendarViewShown="false"

     />

    <TextView

     android:id="@+id/txtdate"

     android:layout_width="wrap_content"

     android:layout_height="wrap_content"

     android:textSize="8pt"

     android:text="date"

     />

    <Button

     android:id="@+id/btnnow"

     android:layout_width="wrap_content"

     android:layout_height="wrap_content"

     android:text="선택한 날짜 조사"

     />

</LinearLayout>

 

 

DatePickerTest.java

 

package com.example.ch13_datepicker;

 

import android.app.Activity;

import android.os.Bundle;

import android.view.View;

import android.widget.DatePicker;

import android.widget.TextView;

import android.widget.Toast;

 

public class DatePickerTest extends Activity {

    DatePicker mDate;

    TextView mTxtDate;

    

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_date_picker_test);

      

        mDate = (DatePicker)findViewById(R.id.datepicker);

        mTxtDate = (TextView)findViewById(R.id.txtdate);

        

        //처음 DatePicker 오늘 날짜로 초기화한다.

        //그리고 리스너를 등록한다.

        mDate.init(mDate.getYear(), mDate.getMonth(), mDate.getDayOfMonth(),

                new DatePicker.OnDateChangedListener() {

                    

                    //값이 바뀔때마다 텍스트뷰의 값을 바꿔준다.

                    @Override

                    public void onDateChanged(DatePicker view, int year, int monthOfYear,

                            int dayOfMonth) {

                        // TODO Auto-generated method stub

                        

                        //monthOfYear 0값이 1월을 뜻하므로 1 더해줌 나머지는 같다.

                        mTxtDate.setText(String.format("%d/%d/%d", year,monthOfYear + 1

                                , dayOfMonth));

                        

                    }

                });

        

        //선택기로부터 날짜 조사

        findViewById(R.id.btnnow).setOnClickListener(new View.OnClickListener() {

            

            //버튼 클릭시 DatePicker로부터 값을 읽어와서 Toast메시지로 보여준다.

            @Override

            public void onClick(View v) {

                // TODO Auto-generated method stub

                String result = String.format("%d %d %d", mDate.getYear(),

                        mDate.getMonth() + 1, mDate.getDayOfMonth());

                Toast.makeText(DatePickerTest.this, result, Toast.LENGTH_SHORT).show();

                

            }

        });

        

    }

      

 

 

    

}

 

 

출력화면