안드로이드 어플리케이션을 제작할 때 많이 만들어 사용하는 것이 아마도 버튼일 것입니다.
그냥 일반 버튼을 사용하는 것보다 버튼이 눌려졌을 때, 선택되어졌을 때 이미지를 다르게 하거나 컬러를 다르게 하는 경우가 많을텐데요. 그럴때 사용할 수 있는 selector 를 가지고 왔습니다.
방법은 이렇습니다. 먼저, res > drawable > btn_selector.xml 파일을 만듭니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_enabled="false" android:drawable="@drawable/btn_enabled" /> <item android:state_selected="true" android:drawable="@drawable/btn_selected" /> <item android:state_pressed="true" android:drawable="@drawable/btn_pressed" /> <item android:state_focused="true" android:drawable="@drawable/btn_focused" /> <item android:state_selected="false" android:drawable="@drawable/btn_normal" /> <item android:state_checked="true" android:drawable="@drawable/btn_checked" /> </selector> | cs |
<btn_selector.xml>
파일을 만든 후, 위 코드를 넣으셔야 합니다. 그리고 나서, 버튼이 그려진 xml 파일로 이동합니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <Button android:id="@+id/sun_btn" android:layout_width="0dp" android:layout_weight="0.8" android:layout_height="wrap_content" android:text="@string/sunday" android:background="@drawable/btn_selector"/> <Button android:id="@+id/mon_btn" android:layout_width="0dp" android:layout_weight="0.8" android:layout_height="wrap_content" android:text="@string/monday" android:background="@drawable/btn_selector"/> | cs |
<activity_main.xml>
위 코드처럼, button의 android:background="@drawable/btn_selector" 로 속성을 정해줍니다.
이렇게 하고 난뒤, 해당 java파일에서 해주셔야 할 내용이 있습니다.
1 2 3 4 5 6 7 8 9 10 11 | @Override public void onClick(View view) { switch(view.getId()) { case R.id.wendes_btn: mBtn.setSelected(!mBtn.isSelected()); break; } } | cs |
<MainActivity.java>
위 코드는 MainActivity.java 파일에서 버튼이 눌릴때마다 selected 값을 달리주는 코드인데요. 이렇게 주시면, 눌려진 버튼이 다시 안 눌려졌다가 를 반복하게 됩니다.
즉, normal <-> selected 를 반복하게 된다는 것입니다. 이런 코드없이 단순이 btn_selector.xml 파일만 적용해서는 효과를 보실 수 없습니다.
참고 부탁드립니다.
'[미네르바's IT] > [미네르바's 안드로이드]' 카테고리의 다른 글
안드로이드 tabhost (0) | 2017.07.21 |
---|---|
안드로이드 android:stretchcolumns 및 tablelayout 속성 (0) | 2017.07.20 |
안드로이드 timepicker 시간 가져오기 (0) | 2017.07.18 |
안드로이드 스튜디오 java.lang.OutOfMemory Error 해결법 (0) | 2017.07.17 |
안드로이드 스튜디오 단축키 모음 파일 다운 가능 (0) | 2017.07.11 |