스피너를 클릭할 시 선택가능한 값들이 드롭다운되어 메뉴로 표시
1. activity_main.xml
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<Spinner
android:id="@+id/spinner"
android:layout_centerHorizontal="true"
android:layout_width="373dp"
android:layout_height="70dp"
app:layout_constraintBottom_toTopOf="@+id/textView"
android:layout_marginBottom="76dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"/>
<TextView
android:layout_width="265dp"
android:layout_height="79dp"
android:text="Hello World!"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
android:id="@+id/textView"/>
</androidx.constraintlayout.widget.ConstraintLayout>
2. item_spinner.xml
스피너 아이템을 출력할 layout
<TextView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/tvItemSpinner"
android:layout_width="match_parent"
android:layout_height="45dp"
android:paddingTop="10dp"
android:paddingStart="30dp"
android:textColor="@android:color/black"
android:textSize="15sp"
android:paddingLeft="30dp"/>
3. MainActivity
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
// 호출
setupSpinnerFruit()
setupSpinnerHandler()
}
// val fruit = arrayOf("과일선택", "사과", "배", "바나나", "포도")
// spinner에 값을 설정하는 함수
fun setupSpinnerFruit(){
// spinner item
// item 데이터는 외부에서 가져와도 됨
val fruit = arrayOf("과일선택", "사과", "배", "바나나", "포도")
// res/values에 array.xml을 만들어서 그곳의 데이터를 갖고옴
//val fruit = resources.getStringArray(R.array.fruit)
// adapter : 데이터(배열)와 layout(item_spinner.xml)을 연결
val adapter = ArrayAdapter(this, R.layout.item_spinner, fruit)
// spinner에 적용
val spinner = findViewById<Spinner>(R.id.spinner)
spinner.adapter = adapter
}
// 선택시 결과를 출력해 주는 함수
fun setupSpinnerHandler(){
val spinner = findViewById<Spinner>(R.id.spinner)
val textView = findViewById<TextView>(R.id.textView)
spinner.onItemSelectedListener = object : AdapterView.OnItemSelectedListener{
override fun onItemSelected(p0: AdapterView<*>?, view: View?, position: Int, id: Long) {
textView.text = "선택됨: $position ${spinner.getItemAtPosition(position)}"
}
override fun onNothingSelected(p0: AdapterView<*>?) {
TODO("Not yet implemented")
}
}
}
}
3-1 MainActiviti(2) - binding
class MainActivity : AppCompatActivity() {
val binding by lazy { ActivityMainBinding.inflate(layoutInflater) }
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
//setContentView(R.layout.activity_main)
setContentView(binding.root)
var data = listOf("선택하세요", "1월", "2월", "3월", "4월", "5월", "6월")
var adapter = ArrayAdapter<String>(this, R.layout.item_spinner, data)
binding.spinner.adapter = adapter
binding.spinner.onItemSelectedListener = object :AdapterView.OnItemSelectedListener{
override fun onItemSelected(p0: AdapterView<*>?, p1: View?, pos: Int, p3: Long) {
binding.result.text = data.get(pos)
}
override fun onNothingSelected(p0: AdapterView<*>?) {
TODO("Not yet implemented")
}
}
}
}
'안드로이드' 카테고리의 다른 글
[Android] ListView (0) | 2022.03.24 |
---|---|
[Android] image (0) | 2022.03.23 |
[Android] Button (0) | 2022.03.23 |
[Android] Intent (0) | 2022.03.22 |
[Android] Fragment (0) | 2022.03.22 |
댓글