2017-02-01 14 views
0

2つの画像がある場合、ボタンが選択されているかどうかにかかわらず(セレクターを使用して)画像を切り替えることができます。1つの画像(灰色)でボタンの色を変更する方法は?

しかし、画像が1つだけの場合。 ボタンを選択したときに画像の色を変更できるかどうかを知りたい。 私は4つのボタンを持っており、どのボタンが選択されたのかを示したいだけです。 つまり、画像を選択しないとグレーになり、選択すると元の色に戻ります。 イメージは1つしかありませんか?

+0

助けがあれば回答を受け入れることを検討してください。 – W4R10CK

答えて

0

が可能です。

という名前drawableXMLレイアウトを作るこの

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

を試してみてください。ボタンで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

あなたのと、この私の拡張Buttonクラスを行うことができます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); 
    } 
} 
関連する問題