개요
안드로이드에서 스피너(Spinner)는 웹 개발에서 흔히 사용하는 드롭다운(dropdown)과 같은 역할을 합니다.
사용자는 스피너를 눌러서 여러 가지 옵션 중에서 하나를 선택할 수 있습니다.
스피너는 모바일 앱에서 여러 옵션 중 하나를 선택해야 하는 경우에 자주 사용됩니다.
예제 코드
package kr.zenn.basiclayout
import android.R
import android.os.Bundle
import android.widget.AdapterView
import android.widget.ArrayAdapter
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import kr.zenn.basiclayout.databinding.ActivityMainBinding
class MainActivity : AppCompatActivity() {
// View Binding을 사용해 레이아웃 뷰를 쉽게 참조할 수 있도록 설정
private val binding by lazy { ActivityMainBinding.inflate(layoutInflater) }
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// 바인딩된 루트 뷰를 설정
setContentView(binding.root)
// 1. 스피너에 표시할 데이터 배열 생성 (첫 번째 항목으로 "선택 안함" 추가)
val items = arrayOf("선택 안함", "Option 1", "Option 2", "Option 3", "Option 4")
// 2. ArrayAdapter 생성 및 스피너에 설정
val adapter = ArrayAdapter(this, R.layout.simple_spinner_item, items)
// 3. 스피너의 드롭다운 목록이 표시될 때 사용할 레이아웃 리소스를 설정
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item)
// 4. 스피너에 어댑터를 연결하여 데이터를 표시
binding.spinner.adapter = adapter
// 5. 스피너의 항목 선택 리스너 설정
binding.spinner.onItemSelectedListener = object : AdapterView.OnItemSelectedListener {
override fun onItemSelected(
parent: AdapterView<*>?,
view: android.view.View?,
position: Int,
id: Long
) {
// "선택 안함"이 선택되었는지 확인
if (position == 0) {
// 첫 번째 항목이 선택되면 선택된 값을 표시하지 않음
binding.selectedTextView.text = ""
} else {
// 다른 항목이 선택되면 해당 항목의 텍스트를 표시
val selectedItem = items[position]
binding.selectedTextView.text = "선택된 값: $selectedItem"
// 선택된 항목을 Toast 메시지로 출력
Toast.makeText(this@MainActivity, "선택된 항목: $selectedItem", Toast.LENGTH_SHORT)
.show()
}
}
override fun onNothingSelected(parent: AdapterView<*>?) {
// 선택된 항목이 없을 때 동작 (필요에 따라 구현 가능)
}
}
}
}
설명
- ArrayAdapter와 데이터 배열
- 스피너에 표시할 데이터를 배열로 생성한 후(
arrayOf
), 이를 스피너에 연결하는 ArrayAdapter를 사용합니다. ArrayAdapter
는 데이터를 스피너에 표시하는 데 필요한 어댑터이며, 여기서arrayOf("선택 안함", "Option 1", "Option 2", "Option 3", "Option 4")
로 데이터 배열을 제공합니다.
- 스피너에 표시할 데이터를 배열로 생성한 후(
- adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item)
- 이 코드는 스피너 항목이 선택될 때 표시되는 드롭다운의 레이아웃을 정의합니다.
simple_spinner_dropdown_item
은 안드로이드에서 기본 제공하는 간단한 스피너 드롭다운 항목 레이아웃입니다. 이 레이아웃은 항목들이 드롭다운 리스트에 어떻게 표시될지를 정의합니다.- 만약 이 줄을 생략하면, 스피너의 항목이 기본 레이아웃으로 표시될 수 있지만, 레이아웃을 명확히 지정함으로써 드롭다운의 UI가 일관되게 보이게 됩니다.
- onItemSelectedListener (항목 선택 리스너)
- 사용자가 스피너에서 항목을 선택하면
onItemSelectedListener
가 호출됩니다. 이 리스너는 두 가지 메서드를 제공합니다:onItemSelected
: 항목이 선택되었을 때 호출되는 메서드.onNothingSelected
: 아무 항목도 선택되지 않았을 때 호출되는 메서드(필요에 따라 처리 가능).
- 이 코드에서는 첫 번째 항목인 “선택 안함”이 선택되면 아무 동작도 하지 않으며, 나머지 항목이 선택될 때만 Toast 메시지와 텍스트 뷰에 값을 표시합니다.
- 사용자가 스피너에서 항목을 선택하면
- SeekBar 기본 속성
SeekBar
의 기본 값은0
부터max
까지의 값으로 설정됩니다. 이를 XML 레이아웃 파일에서 설정하거나 코드에서 설정할 수 있습니다.