2017-02-01 4 views
0

이미 2 개의 이미지가있는 경우 단추를 선택하거나 선택기를 사용하여 이미지를 전환 할 수 있다는 것을 이미 알고 있습니다.하나의 이미지 (회색)로 버튼의 색상을 변경하는 방법은 무엇입니까?

단 하나의 이미지로 .. 버튼을 선택하면 이미지의 색상을 변경할 수 있는지 여부를 알고 싶습니다. 4 개의 버튼이 있으며 어느 버튼이 선택되었는지 나타 내기만하면됩니다. 즉, 선택하지 않으면 이미지가 회색으로 바뀌고 선택되면 원래 색상으로 돌아갑니다. 이미지 1 개만 가능합니까 ??

+0

도움이 될 경우 대답을 수락하십시오. !!! – W4R10CK

답변

0

가능합니다.

Button mButton1, mButton21, mButton3, mButton4; 
int mCurrentId = 0; 

mButton1.setOnClickListener(mOnClickListener); 
mButton2.setOnClickListener(mOnClickListener); 
mButton3.setOnClickListener(mOnClickListener); 
mButton4.setOnClickListener(mOnClickListener); 

View.OnClickListener mOnClickListener = new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
       mCurrentId = v.getId(); 
      switch (v.getId()) { 
       case R.id.button1: 
        if(mCurrentId == v.getId()){ 
        mButton1.setBackgound(Selectimage); 
        }else{ 
        mButton1.setBackgound(DefaultImage); 
        } 
       case R.id.button2: 
        if(mCurrentId == v.getId()){ 
        mButton2.setBackgound(Selectimage); 
        }else{ 
        mButton2.setBackgound(DefaultImage); 
        } 
       case R.id.button3: 
        if(mCurrentId == v.getId()){ 
        mButton3.setBackgound(Selectimage); 
        }else{ 
        mButton3.setBackgound(DefaultImage); 
        } 
       case R.id.button4: 
        if(mCurrentId == v.getId()){ 
        mButton4.setBackgound(Selectimage); 
        }else{ 
        mButton4.setBackgound(DefaultImage); 
        } 
        break; 
      } 

     } 
    }; 
0

가에 XML 레이아웃을 시도하여 drawable 이름 : txt.xml 버튼에서

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
<item android:state_pressed="false" android:drawable="#424242"/> 
</selector> 

:와

 <Button 
     ..... 
     android:background="@drawable/txt" 
     ...../> 
0

당신이 내 확장 버튼 클래스를 할 수 있습니다 코드 onTouchEvent. 제 예제에서는 배경과 텍스트 색상을 변경하면서 배경 이미지에 색조 (컬러 필터)를 사용하여 이미지 색상을 변경할 수 있습니다.

public class MyButton extends Button { 

    public MyButton(Context context) { 
     super(context); 
    } 

    public MyButton(Context context, AttributeSet attrs) { 
     super(context, attrs); 
    } 

    public MyButton(Context context, AttributeSet attrs, int defStyleAttr) { 
     super(context, attrs, defStyleAttr); 
    } 

    @TargetApi(Build.VERSION_CODES.LOLLIPOP) 
    public MyButton(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { 
     super(context, attrs, defStyleAttr, defStyleRes); 
    } 

    @Override 
    public void setEnabled(boolean enabled) { 
    //  super.setEnabled(enabled); 
     if (!enabled) 
      setBackgroundColor(Color.GRAY); 
    } 

    @Override 
    public boolean onTouchEvent(MotionEvent event) { 

     //when Button is Pressed 
     if (!isPressed()) { 
      setBackgroundColor(YOUR PRESSED COLOR); 
      setTextColor(Color.BLACK); 
     }else {//when Button Released 
      setBackgroundColor(<YOUR INACTIVE COLOR>); 
      setTextColor(Color.BLACK); 
     } 
     return super.onTouchEvent(event); 
    } 
} 
관련 문제