넘버 피커는 일정한 범위에 있는 숫자 값 중에 하나를 선택해주는 위젯이다.
날짜나 시간 선택기와 비슷한 모양을 하고 있고 입력 필드를 롱터치해서 직접 값을 입력할 수도 있다.
void setMinValue(int minValue)
void setMaxValue(int maxValue)
void setValue(int value)
setMinValue로 범위의 최소값을 지정하고 setMaxValue로 최대값을 지정한다. 그리고 setValue에서 최대값을 넘어가는 것을 지정했다면 자동적으로 최대값이 바뀌게 된다.
void setWrapSelectorWheel(boolean wrapSelectorWheel)
위 메소드는 범위가 1에서 10일 때 10을 초과하면 다시 1로 갈껀지 아니면 10에서 멈출건지를 나타내는 메소드이다.
void setOnLongPressUpdateInterval(long intervalMillis)
디폴트는 0.3초로 0.3초마다 한번씩 값이 증가한다.
void setDisplayedValues(String[] displayedValues)
범위의 각 값에 해당하는 문자열을 배열로 지정한다.
값 변경 시나 스크롤 시에 이벤트를 받고 싶다면 다음 메소드로 이벤트를 등록한다.
void setOnValueChangedListener(NumberPicker.OnValueChangeListener onValueChangedListener)
void setOnScrollListener(NumberPicker.OnScrollListener onScrollListener)
변경 즉시 어떤 처리를 할 필요가 있을 때만 리스너를 등록한다.
다음은 예제이다.
activity_number_picker_test.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"
>
<NumberPicker
android:id="@+id/picker1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="2dp"
/>
<NumberPicker
android:id="@+id/picker2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="2dp"
/>
<NumberPicker
android:id="@+id/picker3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="2dp"
/>
<NumberPicker
android:id="@+id/picker4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="2dp"
/>
<NumberPicker
android:id="@+id/picker5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="2dp"
/>
</LinearLayout>
NumberPickerTest.java
package com.example.ch13_numberpicker;
import android.app.Activity;
import android.os.Bundle;
import android.widget.NumberPicker;
import android.widget.NumberPicker.OnValueChangeListener;
import android.widget.Toast;
public class NumberPickerTest extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_number_picker_test);
//기본적으로 0~5까지 넘버피커를 만들고
//5까지 올리면 더이상 올라가지 않게 하기
NumberPicker picker1 = (NumberPicker)findViewById(R.id.picker1);
picker1.setMinValue(0);
picker1.setMaxValue(5);
picker1.setWrapSelectorWheel(false);
//0~20까지만들고 길게 누르면 더 빨리 값이 바뀌게 하기
NumberPicker picker2 = (NumberPicker)findViewById(R.id.picker2);
picker2.setMinValue(0);
picker2.setMaxValue(20);
picker2.setOnLongPressUpdateInterval(100);
//0~6으로 하고 월~일요일로 하기
NumberPicker picker3 = (NumberPicker)findViewById(R.id.picker3);
picker3.setMinValue(0);
picker3.setMaxValue(6);
picker3.setDisplayedValues(new String[]{
"일요일", "월요일", "화요일", "수요일", "목요일", "금요일",
"토요일"});
//0~3으로 하고 값별로 텍스트로 바꿔 출력하기
NumberPicker.Formatter mFormatter = new NumberPicker.Formatter() {
@Override
public String format(int value) {
// TODO Auto-generated method stub
switch(value){
case 0:
return "zero";
case 1:
return "one";
case 2:
return "two";
}
return null;
}
};
//0~2로하고 텍스트로 바꿔 출력하기
NumberPicker picker4 = (NumberPicker)findViewById(R.id.picker4);
picker4.setMinValue(0);
picker4.setMaxValue(2);
picker4.setFormatter(mFormatter);
//100~200으로 하고 값이 바뀔때마다 토스트 메시지 띄우기
NumberPicker picker5 = (NumberPicker)findViewById(R.id.picker5);
picker5.setMinValue(100);
picker5.setMaxValue(200);
picker5.setOnValueChangedListener(new OnValueChangeListener() {
@Override
public void onValueChange(NumberPicker picker, int oldVal, int newVal) {
// TODO Auto-generated method stub
Toast.makeText(NumberPickerTest.this, "Value : " + newVal, Toast.LENGTH_SHORT).show();
}
});
}
}
출력 화면
'프로그래밍 > 안드로이드' 카테고리의 다른 글
안드로이드 - 타이틀 바 조작하기 (풀스크린 만들기) (0) | 2015.08.30 |
---|---|
안드로이드 - Application 객체를 이용한 전역 변수 만들기 (0) | 2015.08.26 |
안드로이드 - 목록을 팝업으로 보여주는 ListPopupWindow (0) | 2015.08.23 |
안드로이드 - CalendarView로 쉽게 달력을 만들자 (11) | 2015.08.23 |
안드로이드 - 위젯의 배치를 편리하게 해주는 Space 위젯 (0) | 2015.08.16 |
안드로이드 - 스위치(Switch) 만들어서 편리하게 토글하기 (0) | 2015.08.16 |
안드로이드 - 웹뷰(WebView)로 웹페이지 보여주기 (0) | 2015.08.15 |
안드로이드 - 자동 완성 기능 만들기(AutoCompleteTextView, MultiAutoCompleteTextView) (0) | 2015.08.15 |