상세 컨텐츠

본문 제목

안드로이드 android 상태에 따라 버튼 색깔바꾸기 다른 컨트롤도 응용 가능 관련

스마트기기개발관련/안드로이드 개발

by AlrepondTech 2020. 9. 20. 02:47

본문

반응형

 

 

 

=================================

=================================

=================================

 

 

 

 

 

 

출처: 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

메이데르

아~ 컬러도 따로 만들어주면 되는군요

감사합니다~

 

 

=================================

=================================

=================================

 

 

출처: http://hashcode.co.kr/questions/72/%EC%95%88%EB%93%9C%EB%A1%9C%EC%9D%B4%EB%93%9C-%EA%B8%B0%EB%B3%B8-%EB%B2%84%ED%8A%BC-%EC%83%89%EC%9D%84-%EB%B0%94%EA%BF%80%EC%88%98%EC%9E%88%EB%82%98%EC%9A%94

 

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

  <?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일에 작성됨

 

 

=================================

=================================

=================================

 

 

 

반응형

 

728x90

 

 

 

 

 

출처 : 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>

 

 

=================================

=================================

=================================

 

 

반응형


관련글 더보기

댓글 영역