[TIL] 2020-01-31
31 Jan 2020 | TILToday I Leaned
Spinner
에 라디오 버튼을 구현하는 법을 찾아 한참 삽질했다. 결론은, 아래와 같이 하면 된다.
activity_main.xml (스피너를 넣을 화면에 스피너 생성)
<!--activity_main.xml-->
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<Spinner
android:id="@+id/spinner"
android:layout_width="200dp"
android:layout_height="50dp"
android:spinnerMode="dialog"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
스피너에 넣을 값을 values
>strings.xml
에 저장(파일명은 상관없음)
<!--strings.xml-->
<resources>
<string-array name="stringArray">
<item>apple</item>
<item>banana</item>
<item>citrus</item>\
</string-array>
</resources>
메인 액티비티에서 어답터로 스피너를 생성하고, 값을 넣어준다. 나는 이 부분에서 삽질을 했다. spinner에 radio button을 나타나게 하는 방법을 갖가지 검색어로 구글링했을 때에는 adapter.setDropDownViewResource
에 android.R.layout.simple_spinner_dropdown_item
레이아웃을 사용하여 아이템을 보여주니 라디오버튼이 나왔었다. 하지만 이것은 옛날 자료였고 라이브러리가 변경된 것이다..ㅜ 지금은 아래와 같이 android.R.layout.simple_list_item_single_choice
혹은 android.R.layout.simple_list_item_single_choice
레이아웃을 적용해주면 스피너 아이템에 라디오버튼이 나타난다.
(검색 범위를 2015년부터로 바꾸고나서 바로 찾았다. 진작 했으면 시간을 절약했을것을.. 반성하자)
class MainActivity : AppCompatActivity(), AdapterView.OnItemSelectedListener {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
ArrayAdapter.createFromResource(this, R.array.stringArray, android.R.layout.simple_spinner_item).also { adapter ->
adapter.setDropDownViewResource(android.R.layout.simple_list_item_single_choice)
spinner.adapter = adapter
spinner.onItemSelectedListener = this
}
}
}
Comments