728x90
Spinner 텍스트 색상을 바꾸는 방법이다.
먼저 xml Layout에 Spinner를 추가한다.
<androidx.appcompat.widget.AppCompatSpinner
android:id="@+id/spn_SPList"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingRight="30dp"
android:spinnerMode="dropdown"
android:popupBackground="@color/my_spinner_popupBackground"/>
팝업시 나타나는 바탕의 색상은 위 [popupBackground]태그에 색상처리를 하면 된다.
이후, 현재 앱에 있는 모든 Spinner의 텍스트 색상과 팝업 텍스트 색상을 지정할 수 있도록
themes.xml에 item을 아래와 같이 추가하였다.
<!-- spinner theme-->
<item name="android:spinnerItemStyle">@style/SpinnerItem</item>
<item name="android:spinnerDropDownItemStyle">@style/SpinnerItem.DropDownItem</item>
그리고 해당 아이템에 설정된 style을 아래에 추가를 해 준다.
<style name="SpinnerItem" parent="@android:style/Widget.TextView.SpinnerItem">
<item name="android:textColor">@color/my_spinner_text_color</item>
</style>
<style name="SpinnerItem.DropDownItem" parent="@android:style/Widget.DropDownItem.Spinner">
<item name="android:textColor">@color/my_spinner_dropdown_text_color</item>
</style>
[SpinnerItem] style은 Spinner의 텍스트 색상을 지정하고
[DropDownItem] style은 팝업시 dropdown될때의 텍스트 색상을 지정해 준다.
themes.xml의 전체적 구조는 아래와 같다.
<resources xmlns:tools="http://schemas.android.com/tools">
<!-- Base application theme. -->
<style name="Theme.app" parent="Theme.MaterialComponents.DayNight.DarkActionBar">
<!-- Primary brand color. -->
<item name="colorPrimary">#2540FF</item>
<item name="colorPrimaryVariant">@color/purple_700</item>
<item name="colorOnPrimary">@color/white</item>
<!-- Secondary brand color. -->
<item name="colorSecondary">#2540FF</item>
<item name="colorSecondaryVariant">@color/teal_700</item>
<item name="colorOnSecondary">@color/black</item>
<!-- Status bar color. -->
<item name="android:statusBarColor" tools:targetApi="l">#000000</item>
<!-- Customize your theme here. -->
<!-- spinner theme-->
<item name="android:spinnerItemStyle">@style/SpinnerItem</item>
<item name="android:spinnerDropDownItemStyle">@style/SpinnerItem.DropDownItem</item>
</style>
<style name="Theme.app.NoActionBar">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
</style>
<style name="Theme.app.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" />
<style name="Theme.app.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" />
<style name="SpinnerItem" parent="@android:style/Widget.TextView.SpinnerItem">
<item name="android:textColor">@color/my_spinner_text_color</item>
</style>
<style name="SpinnerItem.DropDownItem" parent="@android:style/Widget.DropDownItem.Spinner">
<item name="android:textColor">@color/my_spinner_dropdown_text_color</item>
</style>
</resources>
해당 설정 후 Spinner의 텍스트색상과 팝업시 dropdown될 때 텍스트 색상이 변경된 것을 확인 할 수 있었다.
728x90
'Programing > android' 카테고리의 다른 글
[android studio] 오류 : Android Gradle plugin requires Java 11 to run. You are currently using Java 1.8. (0) | 2021.11.01 |
---|---|
[android studio] SharedPreferences을 이용한 data 저장하기 (0) | 2021.11.01 |
[android studio] 배경화면 이미지용량으로 인한 에러 (0) | 2021.10.29 |
[android studio] 앱 아이콘 만들기 (0) | 2021.10.28 |
[android studio] 버튼에 배경색이 바뀌지 않는 오류 (0) | 2021.10.24 |
댓글