사용자로부터 날짜를 쉽게 입력 받으려면 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();
}
});
}
}
출력화면
'프로그래밍 > 안드로이드' 카테고리의 다른 글
안드로이드 - 자동 완성 기능 만들기(AutoCompleteTextView, MultiAutoCompleteTextView) (0) | 2015.08.15 |
---|---|
안드로이드 - 핸들러(Handler)를 이용한 간단한 스톱워치 만들기 (4) | 2015.08.09 |
안드로이드 - 크로노미터를 이용한 스톱와치 만들기 (0) | 2015.08.09 |
안드로이드 - 날짜 대화상자 시간 대화상자 만들기 (0) | 2015.08.09 |
안드로이드 - 시간을 더욱 세련되게 표현하는 시계 위젯 만들기 (0) | 2015.08.08 |
안드로이드 - 날짜 시간 나타내기 (0) | 2015.08.08 |
안드로이드 - 프로그래스바의 확장형 시크바 (SeekBar) 만들기 (0) | 2015.08.08 |
안드로이다 - 실행 중에 메뉴를 교체하기 (0) | 2015.08.08 |