안드로이드/View
[Android/Java] Spinner background 설정 시 화살표가 사라지는 문제
도트7
2023. 10. 10. 01:08
Spinner를 꾸미기 위해서 background속성에 color를 설정하거나 drawable을 작성하여 적용하면 우측 끝에 보이던 화살표(▼)가 사라지는 걸 볼 수 있는데, 이는 기존에 background 속성에 설정된 리소스가 화살표 이미지를 포함하고 있었기 때문에 발생하는 문제다. 이 화살표는 사용자에게 "여기를 누르면 아래 방향으로 메뉴를 펼칠 수 있다"는 것을 알려주는 직관적이고 중요한 요소라고 생각했기에 화살표를 살려보기로 했다.
여러 가지를 시도해 본 결과 화살표를 배치하는 방법은 크게 두 가지가 있었다. 첫 번째는 우격다짐식 해결법이지만 Spinner를 LinearLayout, ConstraintLayout 등과 같은 ViewGroup의 하위에 두고 ViewGroup의 background를 변경하는 것이다. 이 때 Spinner는 하단 라인이나 기본 테두리가 없는 테마를 적용한 상태여야 한다.
다른 방법은 Spinner에 적용할 리소스(drawable)에 화살표 이미지를 포함시키는 것이다.
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="rectangle">
<stroke
android:width="3dp"
android:color="@color/baltic_sea"/>
<corners
android:radius="10dp" />
</shape>
</item>
<item
android:gravity="right|center_vertical"
android:width="20dp"
android:height="20dp"
android:end="10dp"
android:drawable="@drawable/baseline_arrow_drop_down_24">
</item>
</layer-list>
위와 같이 작성한 xml을 Spinner의 background로 지정해준다. 화살표는 안드로이드 스튜디오 [File - New - Vector Asset]을 통해 생성했기에 같은 이름으로 검색하면 바로 찾을 수 있을 것이다.