안드로이드 앱 개발 공부/자꾸 까먹어서 적어두는 구현방법

안드로이드 스위치 버튼 커스텀

플래시🦥 2023. 1. 25.

목차

반응형

안드로이드 기본 스위치는

이렇게 생겼다.

안드로이드 스위치 버튼 커스텀
안드로이드 스위치 버튼 커스텀

커스텀 하기 위해서는 2개의 xml 파일이 필요하다.

하나는 selector와 관련된 파일, 다른 하나는 스위치에서 움직이는 스위치의 thumb를 위한 파일이다. 

 

1.switch_track_selector.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_checked="false">
        <shape android:shape="rectangle">
            <corners android:radius="15dp" />
            <size android:width="51dp" android:height="30dp" />
            <solid android:color="#D3D3D3" />
        </shape>

    </item>

    <item android:state_checked="true">
        <shape android:shape="rectangle">
            <corners android:radius="15dp" />
            <size android:width="51dp" android:height="30dp" />
            <solid android:color="@color/grayBlue" />
        </shape>
    </item>
</selector>

안드로이드 스위치 버튼 커스텀

위 파일로 만들어낸 모양이다. 

state_checked 를 통해 on/off 시 다른 형태를 보여 줄 수 있도록 했다. 

2. switch_track_thumb.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_checked="true">
        <layer-list>
            <item android:bottom="4dp" android:left="4dp" android:right="4dp" android:top="4dp">
                <shape android:shape="oval">
                    <size android:width="24dp" android:height="24dp" />
                    <corners android:radius="45dp" />
                    <solid android:color="@color/white" />
                </shape>
            </item>
        </layer-list>
    </item>


    <item>
        <layer-list>
            <item android:bottom="4dp" android:left="4dp" android:right="4dp" android:top="4dp">
                <shape android:shape="oval">
                    <size android:width="24dp" android:height="24dp" />
                    <corners android:radius="45dp" />
                    <solid android:color="@color/grayBlue" />
                </shape>
            </item>
        </layer-list>

    </item>
</selector>

안드로이드 스위치 버튼 커스텀

위 파일로 만들어낸 모양이다.

마찬가지로 state_checked 를 추가 했다. 

 

그리고 나서 activity에서 

<androidx.appcompat.widget.SwitchCompat
    android:id="@+id/switch1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="32dp"
    android:layout_marginEnd="32dp"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    
    //여기부터 추가
    android:thumb="@drawable/switch_track_thumb"
    app:track="@drawable/switch_track_selector"
    app:thumbTextPadding="24dp"
    app:switchMinWidth="0dp"
    android:textOff=""
    android:textOn=""
    />

추가해주면 아래와 같은 결과물을 얻을 수 있다. 

안드로이드 스위치 버튼 커스텀

728x90
반응형

댓글