마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

코드상에서 버튼의 백그라운드에 attr로 선언된 스타일을 입히고 싶습니다.

0 추천
attr파일에 레퍼런스 타입으로 선언을 하고

스타일에서 테마를 하나 만들어 버튼의 이미지를 변경하고 싶습니다.

XML에서는 android:src="?main_leftmenu_004" 이렇게 해서 성공을 했는데

자바 코드상에서는 위의 구문을 어찌 표현해야 할지 모르겠습니다.

조언부탁드려요.
갸아악 (21,260 포인트) 님이 2017년 9월 5일 질문

1개의 답변

0 추천

버튼의 이미지 변경은 drawable에 drawable resource file을 xml 의 형태로 추가하면 됩니다.

예: 아래처럼 하면, 보통상태, 눌렀을 때 등의 상태에서 이미지를 바꿀 수 있습니다.

<?xml version="1.0" encoding="UTF-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_selected="true" >
        <bitmap android:gravity="center"
                android:src="@drawable/ic_launcher"
                android:tileMode="repeat" />
        <shape>
            <solid
                android:color="#008cc6" />
            <stroke
            android:width="1dp"
            android:color="@color/colorPrimaryDark" />
            <corners
                android:radius="5dp" />
            <padding
                android:left="0dp" />
        </shape>
    </item>
    <item android:state_enabled="false" >
        <bitmap android:gravity="center"
            android:src="@drawable/ic_launcher"
            android:tileMode="repeat" />
        <shape>
            <solid
                android:color="@color/colorButtonDisabled" />
            <stroke
                android:width="1dp"
                android:color="#19ffffff" />
            <corners
                android:radius="5dp" />
            <padding
                android:left="0dp" />
        </shape>
    </item>
    <item>
        <bitmap android:gravity="center"
            android:src="@drawable/ic_launcher"
            android:tileMode="repeat" />
        <shape>
            <gradient
                android:startColor="#00849b"
                android:endColor="#00849b"
                android:angle="270" />
            <stroke
                android:width="1dp"
                android:color="@color/colorPrimaryDark" />
            <corners
                android:radius="5dp" />
            <padding
                android:left="0dp" />
        </shape>
    </item>
</selector>
Will Kim (43,170 포인트) 님이 2017년 9월 5일 답변
...