안드로이드 스피너(Spinner)
java.lang.Object
└ android.view.View
└ android.view.ViewGroup
└ android.widget.AdapterView<T extends android.widget.Adapter>
└ android.widget.AbsSpinner
└ android.widget.Spinner
스피너란?
이게 딱 머다 라고 설명하기가 애매한데요. 안드로이드 공식 사이트 레퍼런스에 보시면 나와 있습니다. (영어로) 저의 짧은 실력으로 굳이 해석하자면
스피너는 한번에 하나의 아이템만 보여주며 사용자는 그것들 가운데 하나를 선택할 수 있다. 스피너에서 아이템들은 해당 스피너와 연결된 어댑터에서 온것 입니다.
역시 제가 해석하니 어색하내요. 그나마 좀 비슷한 녀석을 찾는다면 "콤보박스"와 비교할수 있겠네요.
그러면 이번에는 Spinner이 가지고 있는 속성에 대해 살펴보도록 하겠습니다.
xml 속성 이름 |
자바 메소드 이름 |
설명 |
android:gravity |
setGravity(int) |
선택된 항목의 정렬방법을 설정 합니다. |
android:prompt |
|
스피너의 다이얼로그가 보여졌을때 상단 제목(프롬프트)의 문자열을 설정합니다. |
그럼 일단 예제를 보면서 하나씩 살펴 보도록 하겠습니다. 우리가 살펴볼 녀석의 결과는 아래와 같습니다.
res/layout/main.xml
Linearlayout을 수직으로 정렬하게 만들고 그안에 TextView와 Spinner을 삽입 합니다.
스피너를 선택하면 아이템을 선택할 수 있는 다이얼로그가 뜨는데요. 그다이얼 로그의 제목창(프롬프트)를 설정( ㉠ )해 놓았습니다.
res/values/strings.xml
스피너에 보여줄 아이템은 xml파일로 작성하였습니다.
혹시 "이거 머야 " 싶으신 분들은 이전에 리스트뷰를 설명하면서 언급되어 있으니 가셔서 한번 주~욱 읽어보시면 이해가 되실겁니다.
☞ 리스트뷰 참고 http://jwandroid.tistory.com/230
JWAndroidSpinnerTest.java
여기는 설명할 것이 조금 있네요.
㉮ 어댑터 생성하기
리스트뷰와 동일하죠? 두번째 매개변수에 보여질 데이터를, 세번째 매개변수에다가 스피너의 레이아웃을 인자값으로 넘겨 줍니다.
두번째 매개변수와 관련된 것들은 이미 리스트뷰에서 설명했으니 넘어 가구요 (혹시 모르신다면 ☞ 리스트뷰 보러가기 클릭 ) 세번째 매개변수만 보겠습니다. 여기에 넣을수 있는 값은 아래와 같이 2가지가 가능합니다.
레이아웃 리소스 |
설 명 |
simple_spinner_item |
문자열만 보여진다. 텍스트만 표시됨으로 현재 선택된 아이템을 알수가 없다. 다이얼로그에 적용시 해당 아이템의 높이가 낮아 터치가 힘들다. |
simple_spinner_dropdown_item |
문자열과 라디오 버튼이 나타난다. |
㉯ 다이얼로그 화면 레이아웃 설정
setDropDownViewResource() 메소드는스피너를 눌렀을때 나타나는 팝업의 레이아웃을 설정할 수 있습니다.
위에서 언급한 2가지가 가능하니 위의 표를 참고 하시기 바랍니다.
㉰ 스피너 이벤트 설정
스피너의 다이얼로그안에 아이템을 선택했을때 또는 취소했을때 이벤트를 설정하는 부분입니다.
지금은 아래 작성한 코드가 실행되니 아래 코드를 참고 하시면 되겠습니다.
MyOnItemSelectedListener.java
① 항목이 선택 될때 - onItemSelected()
여기서는 간단히 선택한 아이템의 문자열을 토스트로 나타나게 만들었습니다.
② 항목이 선택 해제될 때 - onNothingSelected()
선택 해제될때는 특별히 표시할 게 없죠? 그래서 비워 두었습니다.
위의 파일들을 작성하셔서 실행하시면 위와 같은 결과가 나오게 됩니다. 우측에 역삼각형을 누르시면 선택 화면이 나오게 되죠.
언제든지 궁금하신 사항들은 댓글로 남겨주세요.^^
'프로그래밍 > 안드로이드' 카테고리의 다른 글
[안드로이드/Android] 안드로이드 SurfaceView (80) | 2012.06.19 |
---|---|
[안드로이드/Android ] 스크랩 자료 안드로이드 인텐트 활용 예시 (0) | 2012.06.13 |
[안드로이드 스크랩자료] 안드로이드 해상도별 스크린 레이아웃 (0) | 2012.06.13 |
[안드로이드/Android] 안드로이드 갤러리 (4) | 2012.06.13 |
[안드로이드/Android] 안드로이드 그리드뷰 (26) | 2012.06.09 |
[안드로이드/Android] 안드로이드 리스트뷰 커스텀 어댑터뷰 (11) | 2012.06.05 |
[안드로이드/Android] 안드로이드 리스트뷰 추가 삭제 기능 추가하기 (17) | 2012.06.03 |
[안드로이드/Android] 안드로이드 리스트뷰 기초 (22) | 2012.06.02 |
[안드로이드/Android] 안드로이드 리스트뷰 이미지버튼 이벤트 (12) | 2012.05.24 |