반응형
안드로이드 기본 스위치는
이렇게 생겼다.
커스텀 하기 위해서는 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
반응형
'안드로이드 앱 개발 공부 > 자꾸 까먹어서 적어두는 구현방법' 카테고리의 다른 글
Xampp로 DB - PHP - Android 연결하기 (2)_ FileZilla 와 php (0) | 2023.02.16 |
---|---|
Xampp로 DB - PHP - Android 연결하기 (1)_설치 과정과 오류들 (0) | 2023.02.16 |
[안드로이드 스튜디오] Retrofit + 코루틴 +fragment 리사이클러뷰 kotlin (2) | 2023.02.08 |
[안드로이드 스튜디오]api키 숨기기 (0) | 2023.01.31 |
Status bar 색상 변경 (0) | 2023.01.19 |
댓글