[Android] Button 색상 설정

홈런볼·2022년 8월 16일
0

안드로이드

목록 보기
8/10

안드로이드 버튼의 배경색은 기본적으로 theme.xml 의 colorPrimary 에 설정된 색상으로 구현된다

<resources xmlns:tools="http://schemas.android.com/tools">
    <style name="Theme.앱이름" parent="Theme.MaterialComponents.DayNight.NoActionBar">
        <item name="colorPrimary">@color/purple_500</item>
    </style>
</resources>

이 경우에 2가지 방법을 이용해 버튼의 색상을 변경할 수 있다

1. backgroundTint

Button 컴포넌트의 backgroundTint 요소를 이용해 변경하려는 색상을 추가한다

<Button
        ....
       android:backgroundTint="#9F4444"/>

backgroundTint로 배경색을 변경한 경우
버튼이 disEnable상태로 변경되도 배경색이 회색으로 변하지 않는다.

2. selector.xml

selector.xml 파일을 생성후
버튼을 클릭하지 않았을때, 버튼을 클릭 했을때 보여질 버튼의 디자인을 구현한다

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_enabled="false">
        <shape xmlns:android="http://schemas.android.com/apk/res/android"
            android:shape="rectangle">
            <solid android:color="@color/grey">
            </solid>
            <corners android:radius="8dp" >
            </corners>
        </shape>
    </item>
</selector>

해당 코드는 버튼이 비활성화 됬을 때 사용할 비트맵을 정의한 코드다.

버튼의 디자인을 구현하기 위해서는 <item> <shape> 에 비트맵을 정의하고, 비활성화 된 경우는 회색으로 표현한다.
drawable 파일을 따로 생성해 <shape> 안에 구현하는 대신
<item android:drawable="@drawable/xml파일">
을 설정할 수도 있다.

버튼 상태 요소는 다양하게 있지만 버튼 사용여부를 설정할 때에는 state_enable을 사용한다. 버튼을 클릭하지 않았을 경우는 state_enable의 요소를 false로 선택한다.

  <item android:state_enabled="true">
        <shape xmlns:android="http://schemas.android.com/apk/res/android"
            android:shape="rectangle">
            <solid android:color="@color/green">
            </solid>
            <corners android:radius="8dp" >
            </corners>
        </shape>
    </item>

마찬가지로 state_enable = true로 설정해서 버튼이 사용할 수 있는 상태일 때 비트맵을 정의한다.


Reference

https://developer.android.com/guide/topics/ui/controls/button?hl=ko

0개의 댓글