안드로이드/이론

[ 안드로이드 ] - Selector를 이용하여 버튼, 체크박스 등에 클릭 효과 주기

dongx._.2 2023. 3. 29. 19:11

 

해당 화면을 보면 체크 아이콘과 버튼이 활성화 되었을 때와 비활성화 되었을 때 디자인이 다른 것을 볼 수 있다.

 

앱을 구현하다보면 위와 같이 사용자의 동작에 따라 버튼을 활성화/비활성화 해야하는 경우가 많은데, 이는 Selector를 이용하면 쉽게 구현할 수 있다.

 

 

Selector 작성

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:state_enabled="true">
        <shape android:shape="rectangle">
            <corners android:radius="5dp"></corners>
            <solid android:color="@color/primary_normal"></solid>
        </shape>
    </item>

    <item android:state_enabled="false">
        <shape android:shape="rectangle">
            <corners android:radius="5dp"></corners>
            <solid android:color="@color/btn_gray"></solid>
        </shape>
    </item>
</selector>

item의 속성에 보면 state_enabled처럼 상태를 지정해줄 수 있다.

state_enabled는 활성화 되었을 때를 뜻하며, 클릭 했을 때 색상을 변경하고 싶다면 state_checked를 사용하면 된다.

 

 

버튼에 Selector 지정

            <Button
                android:id="@+id/allow_btn"
				...
                android:background="@drawable/selector_btn"/>

이런식으로 background에 속성을 지정해주면 된다.

텍스트도 같이 변경하고 싶다면 text에 대한 Selector도 생성한 후 지정해주면 된다.