해당 화면을 보면 체크 아이콘과 버튼이 활성화 되었을 때와 비활성화 되었을 때 디자인이 다른 것을 볼 수 있다.
앱을 구현하다보면 위와 같이 사용자의 동작에 따라 버튼을 활성화/비활성화 해야하는 경우가 많은데, 이는 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도 생성한 후 지정해주면 된다.
'안드로이드 > 이론' 카테고리의 다른 글
[ 안드로이드 ] RecylcerView + Filterable을 이용하여 실시간 검색 기능 구현하기 (0) | 2023.04.07 |
---|---|
[ 안드로이드 ] BottomSheetDialog 테두리 둥글게 설정하기 (0) | 2023.04.04 |
[ 안드로이드 ] Handler를 통한 Viewmodel 변수 상태 체크하기 (0) | 2023.03.21 |
[ 안드로이드 ] 해상도 대응, 다양한 화면 크기 지원 (0) | 2023.01.31 |
[ 안드로이드 ] local.properties를 이용하여 API Key 안전하게 보관하기 (0) | 2023.01.25 |