기타/AOS, Kotlin

앱 개발 프로젝트에서 배운 점(2) : Spinner 아이템 글자크기 및 폰트, 정렬 다루는 방법

kyxxn 2023. 8. 14. 03:34
728x90

Spinner 아이템 글자크기 및 폰트, 정렬 다루는 방법

Spinner 클릭 시

스피너란, 이처럼 클릭을 했을 때 여러가지 목록을 뜨게 하는 기능이다.

sound_array 요소들

res - values - array.xml 을 만들어

그 안에 <string-array name=”이름”> 태그로 클릭했을 때 뜰 목록들을 지정할 수 있다.

그러고 kt 파일에서 이 array 이름을 호출해주면 된다.

 

  • 스피너를 클릭했을 때 메소드 2개 오버라이딩
sound_spinner.onItemSelectedListener = object : AdapterView.OnItemSelectedListener {
            override fun onItemSelected(p0: AdapterView<*>?, p1: View?, p2: Int, p3: Long) {
                set_music = p2
            }

            override fun onNothingSelected(p0: AdapterView<*>?) {
            }
        }

스피너의 onItemSelected 리스너의 메소드로 두 가지가 있는데,

개발자가 “유저가 아이템을 클릭하여 선택했을 때” or “유저가 아무것도 클릭하지 않았을 때”

위 두 경우에 대해 처리해주어야 한다.

아무것도 처리를 안 했을 때는 자동적으로 디폴트로 첫 번째 요소를 가리키고 있다.

사용자가 클릭했을 때는, 정수타입으로 그 요소가 array에 몇 번째 위치하는 지 인덱스를 가져온다.

 

  • 스피너 요소들의 정렬 및 폰트 꾸미기

sound_spinner.xml

우선 레이아웃 하나를 만들어 모두 제거하여 빈 코드로 만들고, 텍스트뷰만 넣어고 스피너를 클릭했을 때, 보일 글자로 설정해준다.

스피너의 원소, 즉 아이템들이 새로 적용될 텍스트뷰로, 우측정렬과 글자크기는 20으로 설정했다.

val sound_spinner: Spinner = view.findViewById(R.id.sound_spinner)
        val sound_adapter = ArrayAdapter.createFromResource(
            requireContext(),
            R.array.sound_array,
            R.layout.sound_spinner
        )
        sound_adapter.setDropDownViewResource(R.layout.sound_spinner)
        sound_spinner.adapter = sound_adapter

이후 스피너가 들어있는 kt 파일에서 다음과 같이 spinner를 설정한다.

  1. sound_spinner 라는 변수로 레이아웃에서 만든 spinner를 받아온다.
  2. sound_adapter 라는 변수를 만들어 values에서 지정했던 배열, spinner의 폰트 및 글자 크기, 정렬 등이 적용된 레이아웃을 가져온다.
  3. sound_spinner의 adapter에 2번에서 만든 변수를 초기화 시켜준다.