=================================
=================================
=================================
출처: http://www.androidpub.com/1808109
버튼을 하나 만들었는데 selector를 이용해서 바탕은 클릭시에 변경되게 만들었는데요..
바탕 변경하는것과 같이 텍스트컬러도 변경하고싶은데 방법이 없네요
셀렉터에는 컬러는 못바꾸는것같고...
혹시 방법 없을까요>??
-------------------------------------------------------------------------------------------------------------------------------------------
button.setTextColor(color) ..............................................................................
쩝 버튼위젯 자체에 있는속성입니다...
2011.10.24 13:15:52
메이데르
답변 감사합니다..
소스 안건드리고 xml로 하는게 좋을거같아서 ㅎㅎ
2011.10.24 12:07:14
아갈로이드
(추천: 1 / 0)
셀렉터에 컬러도 설정할 수 있습니다.
아래와 같이 셀렉터를 만들고 사용해 보세요ㅣ
text_color_selector.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_focused="true"
android:color="#b6b6b6" />
<item android:state_pressed="true"
android:color="#b6b6b6" />
<item android:state_selected="true"
android:color="#ffffff" />
<item android:color="#b6b6b6" />
</selector>
<Button
android:textColor="@drawable/text_color_selector"
>
2011.10.24 13:14:28
메이데르
아~ 컬러도 따로 만들어주면 되는군요
감사합니다~
=================================
=================================
=================================
안드로이드 기본 버튼 색을 바꾸고싶습니다. 그래서 찾아보다가
<?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>
똑같이 셀렉터를 쓰는데 위에 색을 입혀주는 방식이에요
2016년 01월 05일에 작성됨
=================================
=================================
=================================
출처 : http://www.cyworld.com/prizm0911/3284619
아래 xml파일을 res/values 에 생성.
1.--------------------------------------------------------------------------------------------
color.xml
<?xml version="1.0" encoding="UTF-8"?>
<resources>
<color name="pressed1">#959ca4</color>
<color name="pressed2">#646d79</color>
<color name="focused1">#959ca4</color>
<color name="focused2">#646d79</color>
<color name="default1">#686e77</color>
<color name="default2">#40474f</color>
<color name="stroke">#00000000</color>
</resources>
2.--------------------------------------------------------------------------------------------
아래 xml파일을 res 에 해당 drawable 에 생성.
여기서는 위 1 번에서 설정된 색을 가져와서 셋팅하게됩니다.
예> @color/pressed1 = color = xml파일, pressed1 = name
selector.xml
<?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/pressed1"
android:endColor="@color/pressed2"
android:angle="270" />
<stroke
android:width="3dp"
color="@color/stroke" />
<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/focused1"
android:startColor="@color/focused2"
android:angle="270" />
<stroke
android:width="3dp"
color="@color/stroke" />
<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/default1"
android:startColor="@color/default2"
android:angle="270" />
<stroke
android:width="3dp"
color="@color/stroke" />
<corners
android:radius="3dp" />
<padding
android:left="10dp"
android:top="10dp"
android:right="10dp"
android:bottom="10dp" />
</shape>
</item>
</selector>
3.--------------------------------------------------------------------------------------------
해당 레이아웃 xml 파일 Button에 selector.xml 적용.
Button의 background에 drawable에 생성해둔 selector.xml 을 적용함으로써...
클릭, 포커스, 기본 색이 selector.xml 의 설정된 gradient 칼라로 적용되고, 코너라운드, 테두리, 간격등의 설정이 함께 적용됩니다.
main.xml
<-- 생략 -->
<Button
android:layout_width="215px"
android:layout_height="wrap_content"
android:layout_marginTop="5px"
android:layout_marginLeft="5px"
android:layout_alignParentLeft="true"
android:background="@drawable/selector"
/>
<-- 생략 -->
--------------------------------------------------------------------------------------------
아래는 제가 만들어본 버튼에 위 과정을 토대로 입혀본 결과.
왼쪽은 기본, 오른쪽은 포커스 되었을때와 클릭했을때 결과입니다.
color.xml 에서 색을 적절하게 변경하고 selector.xml 에서 설정등을 적절하게 변경해서 쓰면 좀더 이쁘고 유용하겠지요.
=================================
=================================
=================================
출처: http://whitegom.tistory.com/18
버튼 선택 시에 백그라운드로 이미지를 주면 클릭시에 변화가 없기 때문에 어떠한 곳을 클릭하였는지 알 수 없다. 따라서 이미지를 교체 해 주어야 하는데 xml로 교체될 이미지를 지정 해 놓으면 이미지가 클릭시와 포커스를 갖을 때 바뀐는 것을 볼 수 있다. 텍스트 또한 클릭 이벤트를 사용 할 때 백그라운드나 색상을 바꿀 수 있다. xml은 drawable폴더에 저장한다.
버튼 셀렉터
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/btn_icon_fontsize_over"android:state_pressed="true"/> <!-- pressed -->
<item android:drawable="@drawable/btn_icon_fontsize_over"android:state_focused="true"/> <!-- focused -->
<item android:drawable="@drawable/btn_icon_fontsize"/> <!-- default -->
</selector>
버튼은 android:background 또는 setBackgroundResource 로 등록해야 한다.
텍스트 색상 셀렉터
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="@color/progream_bace_color2"android:state_pressed="true"/> <!-- pressed -->
<item android:color="@color/progream_bace_color2"android:state_focused="true"/> <!-- focused -->
<item android:color="@color/progream_bace_color1"/> <!-- default -->
</selector>
컬러는 color.xml에 지정한것을 사용 하거나 직접 rgb값을 주어도 된다. 버튼에 background에 지정하는 것과는 다르게 색상이라면 android:textColor 또는 setTextColor에 넣어야 한다.
응용편
스타일 또한 클릭시에 바꿀 수 있다.
이부분에 대한 출처
(http://stackoverflow.com/questions/2682051/android-how-to-make-button-text-bold-when-pressed-or-focussed)
<style name="myStyle">
<item name="android:textSize">9px</item>
<item name="android:gravity">center_horizontal</item>
<item name="android:textColor">#fff</item>
<item name="android:textStyle">bold</item>
</style>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_focused="true"
android:state_pressed="false"
style="@style/myStyle" /> </selector>
=================================
=================================
=================================
'스마트기기개발관련 > 안드로이드 개발' 카테고리의 다른 글
[안드로이드] android 앱에서 다른 앱 실행 시 값 전달하는 방법 패키지명 또는 URI로 다른앱 실행 방법 관련 (0) | 2020.09.20 |
---|---|
안드로이드 android TextView 밑줄 긋기, html 의 href 처럼 링크버튼 처럼 사용하기 관련 (0) | 2020.09.20 |
[android] Android Studio를 사용하며 자주 겪는 Gradle 관련 오류 해결 방법 (0) | 2020.09.20 |
[android] 안드로이드 android 홈버튼 이벤트, 감지 관련 (0) | 2020.09.20 |
[android] 안드로이드에서 비디오 플레이 하기 관련 seekbar 컨트롤 관련 (0) | 2020.09.20 |
댓글 영역