반응형
res/strings.xml
- 여기에 spinner를 구성할 item을 모아놓은 string array를 정의한다.
<string-array name="todo_spinner_ampm">
<item>오전</item>
<item>오후</item>
</string-array>
<string-array name="todo_spinner_hour">
<item>1</item>
<item>2</item>
<item>3</item>
<item>4</item>
<item>5</item>
<item>6</item>
<item>7</item>
<item>8</item>
<item>9</item>
<item>10</item>
<item>11</item>
<item>12</item>
</string-array>
<string-array name="todo_spinner_minute">
<item>00</item>
<item>05</item>
<item>10</item>
<item>15</item>
<item>20</item>
<item>25</item>
<item>30</item>
<item>35</item>
<item>40</item>
<item>45</item>
<item>50</item>
<item>55</item>
</string-array>
custom한 spinner의 배경 drawable
(layer-list로 아이템들을 겹쳐서 drawable을 만듦)
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<layer-list>
<item
android:drawable="@drawable/edittext_design"/>
<item
android:drawable="@drawable/ic_drop_down_arrow"
android:gravity="center|end"
android:width="10dp"
android:right="10dp"
android:height="10dp"/>
</layer-list>
</item>
</selector>
spinner가 포함된 layout.xml에는
<Spinner
android:id="@+id/todo_spinner_hour"
android:layout_width="60dp"
android:layout_height="35dp"
android:layout_marginLeft="8dp"
android:layout_marginTop="8dp"
android:background="@drawable/todo_spinner"
android:popupBackground="@drawable/edittext_design" />
background에 커스텀한 drawable을 지정한다.
(popupBackground는 spinner를 클릭해서 선택할 항목들이 popup으로 나타날때의 배경을 지정한다. edittext_design은 spinner 배경에서 회색 화살표만 뺀 부분을 지정했기 때문에, 위 캡쳐와같은 배경이 나타난다)
val ampm = resources.getStringArray(R.array.todo_spinner_ampm)
val adapter = ArrayAdapter(requireContext(), android.R.layout.simple_spinner_dropdown_item, ampm)
binding.todoSpinnerAmpm.adapter = adapter
resources.getStringArray(R.array.배열이름) 으로 strings.xml에서 지정한 string array를 가져와서,
ArrayAdapter의 마지막 매개변수로 배열을 지정한 후,
해당 spinner에 adapter를 지정한다.
(여기서 requireContext()를 쓴 이유는 activity가 아닌 dialogfragment, 즉 fragment에서 spinner를 사용하기 때문에 context를 requireContext()를 주었음)
references
반응형
'Android' 카테고리의 다른 글
[Android] Rxjava / Reactive Programming 개념 (0) | 2021.03.25 |
---|---|
[Android/kotlin] datepickerdialog 커스텀 / 선택한 날짜의 년,월,일,요일 표시 (0) | 2021.03.08 |
[Android/kotlin] DialogFragment를 이용한 커스텀 대화상자 만들기 (0) | 2021.03.05 |
[Android/kotlin] okhttp & retrofit으로 json 파싱하기 (4) | 2021.01.29 |
[Android] 팔레트 항목 뜯어보기 (0) | 2021.01.21 |