커스텀한 디자인의 버튼을 만들려고 한다.
press 상태일 때 테두리, 배경, 텍스트 컬러가 모두 변경되어야 한다.
1. [X] TextView의 textColor와 backround 속성에 selector 넣기
1 2 3 4 5 | <TextView ... android:textColor="@drawable/a_selector" android:background="@drawable/b_selector" /> |
2. [X] TextView의 background 속성에 넣을 selector에 테두리, 배경, 텍스트 컬러 설정하기
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android" android:exitFadeDuration="@android:integer/config_shortAnimTime"> <item android:state_pressed="true" android:color="#ffffff"> <shape> <stroke .../> <corners ... /> <solid android:color="#ffffff"/> <padding ... /> </shape> </item> <item android:state_focused="true" android:color="#ffffff"> <shape> <stroke .../> <corners ... /> <solid android:color="#ffffff"/> <padding ... /> </shape> </item> <item android:color="#000000"> <shape> <stroke .../> <corners ... /> <solid android:color="#000000"/> <padding ... /> </shape> </item> </selector> | cs |
3. [O] TextView를 RelativeLayout으로 감싼다. RelativeLayout에 clickable 속성을 준다.
RelativeLayout의 background 속성에 @drawable/selector를 적용하고, TextView의 textColor 속성에 @color/selector를 적용한다.
*** TextView에 clickable 속성을 주면 안된다. 텍스트를 정확히 클릭해야만 textColor가 변하기 때문.
1 2 3 4 5 6 7 8 9 10 | <RelativeLayout ... android:clickable="true" android:background="@drawable/b_selector"> <TextView ... android:layout_centerInParent="true" android:textColor="@color/a_selector" /> </RelativeLayout> | cs |
'Android > Knowhow' 카테고리의 다른 글
API의 content type이 application/x-www-form-urlencoded 일 때 (0) | 2017.01.19 |
---|---|
android Lollipop black image / 롤리팝에서 라운딩 이미지가 검정색으로 나올때 (0) | 2017.01.17 |
fragment에서 onActivityResult() 받기 (0) | 2016.12.28 |
액티비티(프래그먼트) 간에 객체나 리스너를 공유하면 안된다. (0) | 2016.12.27 |
ScrollView의 height를 match_parent하기 (0) | 2016.12.27 |