프로그래밍 언어/Android

색상이 다른 표준 Android 버튼

Rateye 2021. 6. 13. 20:40
728x90
반응형
질문 : 색상이 다른 표준 Android 버튼

클라이언트의 브랜딩에 더 잘 어울리도록 표준 Android 버튼의 색상을 약간 변경하고 싶습니다.

지금까지이 작업을 수행하는 가장 좋은 방법은 Button 의 드로어 블을 res/drawable/red_button.xml .

<?xml version="1.0" encoding="utf-8"?>    
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true" android:drawable="@drawable/red_button_pressed" />
    <item android:state_focused="true" android:drawable="@drawable/red_button_focus" />
    <item android:drawable="@drawable/red_button_rest" />
</selector>

하지만이를 위해서는 커스터마이징하려는 각 버튼에 대해 실제로 세 가지 다른 드로어 블을 만들어야합니다 (하나는 정지 된 버튼, 하나는 포커스가있는 경우, 다른 하나는 눌렀을 때). 그것은 내가 필요로하는 것보다 더 복잡하고 건조하지 않은 것 같습니다.

제가 정말로하고 싶은 것은 버튼에 일종의 색상 변환을 적용하는 것입니다. 내가하는 것보다 버튼의 색상을 변경하는 더 쉬운 방법이 있습니까?

답변

이 모든 작업이 하나의 파일에서 매우 쉽게 수행 될 수 있음을 발견했습니다. custom_button.xml 이라는 파일에 다음 코드를 넣은 다음 background="@drawable/custom_button" 을 설정합니다.

<?xml version="1.0" encoding="utf-8"?>
<selector
    xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:state_pressed="true" >
        <shape>
            <gradient
                android:startColor="@color/yellow1"
                android:endColor="@color/yellow2"
                android:angle="270" />
            <stroke
                android:width="3dp"
                android:color="@color/grey05" />
            <corners
                android:radius="3dp" />
            <padding
                android:left="10dp"
                android:top="10dp"
                android:right="10dp"
                android:bottom="10dp" />
        </shape>
    </item>

    <item android:state_focused="true" >
        <shape>
            <gradient
                android:endColor="@color/orange4"
                android:startColor="@color/orange5"
                android:angle="270" />
            <stroke
                android:width="3dp"
                android:color="@color/grey05" />
            <corners
                android:radius="3dp" />
            <padding
                android:left="10dp"
                android:top="10dp"
                android:right="10dp"
                android:bottom="10dp" />
        </shape>
    </item>

    <item>        
        <shape>
            <gradient
                android:endColor="@color/blue2"
                android:startColor="@color/blue25"
                android:angle="270" />
            <stroke
                android:width="3dp"
                android:color="@color/grey05" />
            <corners
                android:radius="3dp" />
            <padding
                android:left="10dp"
                android:top="10dp"
                android:right="10dp"
                android:bottom="10dp" />
        </shape>
    </item>
</selector>
출처 : https://stackoverflow.com/questions/1521640/standard-android-button-with-a-different-color
728x90
반응형