본문 바로가기

코딩 갤러리/안드로이드

[안드로이드스튜디오] 버튼 색상 변경하는 방법 두 가지

728x90
반응형

안드로이드 스튜디오에서 버튼 색상을 아무리 변경을 해도 보라색에서 색이 변경되지 않는 문제가 있다. 이는 안드로이드 스튜디오가 앱의 테마를 Theme.MaterialComponents를 기본 디폴트로 사용을하게 되면서 발생한 문제이다. 버튼 색상을 바꾸는 방법 중 두 가지(이외에도 여러가지 있는 듯)를 알아보자.

첫번째) themes.xml 수정하기

<resources xmlns:tools="http://schemas.android.com/tools">
    <!-- Base application theme. -->
    <style name="Theme.MyCalculator" parent="Theme.MaterialComponents.DayNight.DarkActionBar">
        <!-- Primary brand color. -->
        <item name="colorPrimary">@color/purple_500</item>
        <item name="colorPrimaryVariant">@color/purple_700</item>
        <item name="colorOnPrimary">@color/white</item>
        <!-- Secondary brand color. -->
        <item name="colorSecondary">@color/teal_200</item>
        <item name="colorSecondaryVariant">@color/teal_700</item>
        <item name="colorOnSecondary">@color/black</item>
        <!-- Status bar color. -->
        <item name="android:statusBarColor" tools:targetApi="l">?attr/colorPrimaryVariant</item>
        <!-- Customize your theme here. -->
    </style>
</resources>

프로젝트의 app-res-values-themes-themes.xml에 들어가면 위와 같은 코드가 기본적으로 세팅되어있을 것이다. 이 코드의 세번째 줄의 'parent=~' 값을 아래와 같이 'Theme.AppCompat.Light'로 변경해주면 색상 변경이 가능하다.

	...(생략)...
    <style name="Theme.MyCalculator" parent="Theme.AppCompat.Light">
        <!-- Primary brand color. -->
		...(생략)...
728x90
반응형

두번째) androidx.appcompat.widget.AppCompatButtom 사용하기

기존 button을 추가하면 xml 상에서 아래와 같은 코드일 것이다.

    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="#000000"
        android:text="Button"
        android:textColor="#FFFFFF"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

여기서 Button을 androidx.appcompat.widget.AppCompatButtom로 변경하여 사용을 하면 xml 수정없이 색상만 변경을 해주면 간단하게 적용되는 것을 확인할 수 있다.

    <androidx.appcompat.widget.AppCompatButton
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="#000000"
        android:text="Button"
        android:textColor="#FFFFFF"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

 

 

 

728x90
반응형