본문 바로가기
Programing/android

[android studio] Spinner 텍스트 색상, 팝업 텍스트 색상 바꾸기

by Benedictus711 2021. 10. 30.
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

댓글