안드로이드 개발 팁 #70 - 2가지 조건에 따라 배경색을 다르게 설정하기 위한 selector 리소스 정의 방법

2가지 조건에 따라 배경색을 다르게 설정하기 위한 selector 리소스 정의 방법

No. 70
2024. 06. 18 (화) | Written by @dorian-mobileapp

시작하며...

다음과 같은 배경색을 갖는 뷰를 구현하려면 어떻게 해야 할까요?

  • 버튼: 터치할 때와 안할 때의 배경색이 다르다.
  • 토글 버튼: 체크 여부에 따라 배경색이 다르다.

위와 같은 특성은 selector 리소스를 만들고 그것을 뷰의 background 속성으로 지정하면 됩니다.


터치할 때와 안할 때의 배경색이 다른 selector 리소스

아래 코드는 뷰를 누를 때 배경색을 검정으로, 그렇지 않을 때 배경색을 회색으로 설정하기 위한 selector입니다.

<selector xmlns:android ="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true" android:drawable="@drawable/black" />
    <item android:state_pressed="false" android:drawable="@drawable/gray" />
</selector>
  • android:state_pressed
    • 뷰가 눌러진 상태인지를 나타냄
    • true: 사용자가 뷰를 누르고 있음
  • android:drawable
    • 뷰의 외형을 설정할 수 있음
    • 설정 항목: 크기(너비, 높이), 색상(solid), 선(border), 모서리 둥글기(corner) 등

추가로 색상이 검정인 drawable 파일은 다음과 같이 정의할 수 있습니다.

<shape xmlns:android ="http://schemas.android.com/apk/res/android">
    <solid android:color="##000000" />
</shape>

체크 여부에 따라 배경색이 다른 selector 리소스

아래 코드는 뷰가 체크되었을 때 배경색을 파랑으로, 그렇지 않을 때 배경색을 하얀색으로 설정하기 위한 selector입니다.

<selector xmlns:android ="http://schemas.android.com/apk/res/android">
    <item android:state_checked="true" android:drawable="@drawable/blue" />
    <item android:state_checked="false" android:drawable="@drawable/white" />
</selector>

selector 리소스를 뷰의 background 속성에 적용

위와 같이 정의한 selector 리소스를 뷰의 android:background 속성에 정의하면 됩니다.

<Button
    ...
    android:background="@drawable/selector_파일_이름" />

지난 안드로이드 개발 팁


Layout provided by Steemit Enhancer hommage by ayogom


Posted through the ECblog app (https://blog.etain.club)
Sort:  

[광고] STEEM 개발자 커뮤니티에 참여 하시면, 다양한 혜택을 받을 수 있습니다.

안녕하세요.
SteemitKorea팀에서 제공하는 'steemit-enhancer'를 사용해 주셔서 감사합니다. 개선 사항이 있으면 언제나 저에게 연락을 주시면 되고, 관심이 있으신 분들은 https://cafe.naver.com/steemitkorea/425 에서 받아보실 수 있습니다. 사용시 @응원해 가 포함이 되며, 악용시에는 모든 서비스에서 제외될 수 있음을 알려드립니다.


안녕하세요.
이 글은 SteemitKorea팀(@ayogom)님께서 저자이신 @dorian-mobileapp님을 응원하는 글입니다.
소정의 보팅을 해드렸습니다 ^^ 항상 좋은글 부탁드립니다
SteemitKorea팀에서는 보다 즐거운 steemit 생활을 위해 노력하고 있습니다.
이 글은 다음날 다시 한번 포스팅을 통해 소개 될 예정입니다. 감사합니다!

Upvoted! Thank you for supporting witness @jswit.

Coin Marketplace

STEEM 0.20
TRX 0.19
JST 0.033
BTC 88885.90
ETH 3279.02
USDT 1.00
SBD 2.99