안드로이드 기본 버튼 색을 바꿀수있나요?

안드로이드 기본 버튼 색을 바꾸고싶습니다. 그래서 찾아보다가

    <?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>

셀렉터를 만들어서 버튼이 눌렸을때 포커스가 갔을때 버튼을 안만졌을때 마다 버튼 이미지를 바꿔주는 방법을 찾았습니다. 근데 이건 너무 번거롭고 이미지파일도 세개나 필요하고 그래서 저는 그냥 버튼의 색만 바꾸고 싶은데 가능할까요?

1답변

  • 좋아요

    0

    싫어요
    채택취소하기

    좀 쉬운 방법을 생각해봤는데 아래 코드를 응용해보세요. 파일이름은 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>
    

    똑같이 셀렉터를 쓰는데 위에 색을 입혀주는 방식이에요

ᕕ( ᐛ )ᕗ
로그인이 필요합니다

작성한 답변에 다른 개발자들이 댓글을 작성하거나 댓글에 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.