안드로이드 버튼의 배경색은 기본적으로 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가지 방법을 이용해 버튼의 색상을 변경할 수 있다
Button 컴포넌트의 backgroundTint 요소를 이용해 변경하려는 색상을 추가한다
<Button
....
android:backgroundTint="#9F4444"/>
backgroundTint로 배경색을 변경한 경우
버튼이 disEnable상태로 변경되도 배경색이 회색으로 변하지 않는다.
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
로 설정해서 버튼이 사용할 수 있는 상태일 때 비트맵을 정의한다.
https://developer.android.com/guide/topics/ui/controls/button?hl=ko