안드로이드 레이아웃 selector

Jiyoon Chae·2021년 8월 12일
0

안드로이드

목록 보기
9/23

안드로이드 버튼 selector 만들기

selector 속성의 종류

  • android:state_pressed : 뷰가 눌렸을 때 (터치나 클릭이 발생했을 때)
  • android:state_focused : 뷰에 포커스가 위치했을 때 (EditText를 입력할 수 있을 때)
  • android:state_selected : 뷰를 선택했을 때 (방향키로 이동하다가 선택했을 때)
  • android:state_checkable: 체크 가능한 상태일 때 (체크 박스를 체크할 수 있는 상태일 때)
  • android:state_checked : 체크된 상태일 때 (체크박스가 체크된 상태일 때)
  • android:state_enabled: 사용할 수 있는 상태 일 때 (터치나 클릭 이벤트 등을 받을 수 있는 상태일 때)

selector 속성을 적용하기 위해 필요한 것

  1. 눌리지 않았을 때의 버튼 디자인.xml
    <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
        <item>
            <shape>
                <corners android:radius="24dp"/>
                <solid
                    android:color="@color/failed"/>
            </shape>
        </item>
    </layer-list>
  1. 눌렸을 때의 버튼 디자인.xml
    <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
        <item>
            <shape>
                <corners android:radius="24dp"/>
                <solid
                    android:color="@color/pass"/>
            </shape>
        </item>
    </layer-list>

→ selector를 적용하기 위해서 drawable 에 리소스를 만들어야 한다.

  1. 이 두가지 drawable 리소스를 selector코드 안에 넣어주면 된다. (새로운 xml)
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:state_enabled="false" android:drawable="@drawable/bg_unselected"/>
        <item android:drawable="@drawable/bg_selected"/>
    </selector>

초록색 표시된 부분을 바꾸면됨.

이 selector drawable 리소스를 button의 background 속성에 넣어주면 된다.

<Button
                    android:id="@+id/btn_save"
                    android:layout_width="match_parent"
                    android:layout_height="48dp"
                    android:layout_marginTop="36dp"
                    android:layout_gravity="right"
                    android:layout_marginRight="3dp"
                    android:background="@drawable/selector_button_base_new"
                    android:text="@string/save"
                    android:textColor="@color/white"
                    android:textAllCaps="true"
                    android:onClick="@{clickEvent::startSave}"
                    />
profile
바닐라라떼 좋아☕

1개의 댓글

comment-user-thumbnail
2022년 10월 12일

좋은 포스팅 감사합니다,, @)--,,,

답글 달기