2013-11-23 8 views
0

Как я могу изменить свой цвет своего изображения при щелчке по нему?ImageButton изменить цвет фона при нажатии

Я хочу сделать что-то вроде этого:

Кнопка (синий) -> Нажмите кнопку -> (красный) -> Клик -> Кнопка (синий) -> Нажмите -> Кнопка (красный)

, когда я нажимаю на него, меняет цвет, и когда я нажимаю снова, он возвращается к оригиналу.

Я пытался сделать так:

mTrashFlag = !mTrashFlag; 
ImageButton bt = (ImageButton)findViewById(R.id.trash_button); 
if(!mTrashFlag) 
{ 
    bt.setBackgroundColor(0x4CB8FB); 
} 
else 
{ 
    bt.setBackgroundColor(0xff0000); 
} 

но не работал. Он изменил цвет на белый, а затем я больше не мог его нажимать.

ответ

4

Вы должны пройти атрибут в Color класс вместо кода гекса непосредственно:

if(!mTrashFlag) 
{ 
    bt.setBackgroundColor(Color.parseColor("#4CB8FB")); 
} 
else 
{ 
    bt.setBackgroundColor(Color.RED); 
} 

Кроме того, вы должны зарегистрировать OnClickListener на кнопку, чтобы получить уведомление, когда он нажал, так что окончательный код:

bt.setOnClickListener(new View.OnClickListener() { 

    // 'v' is the clicked view, which in this case can only be your button 
    public void onClick(View v) { 
     mTrashFlag = !mTrashFlag; 

     if (!mTrashFlag) 
     { 
      v.setBackgroundColor(Color.parseColor("#4CB8FB")); 
     } 
     else 
     { 
      v.setBackgroundColor(Color.RED); 
     } 
    } 
}); 
+0

Спасибо это сработало! , и, кстати, мне не нужно регистрироваться так, потому что в макете xml я использовал onclick = my_function .. – user2953680

+0

О, ладно, я не был уверен в этом. Рад, что это сработало! Не забудьте принять ответ :) – Flawyte

0

Вы можете использовать следующий способ ..

String color = "b"; 
@Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.buttonlayout); 

     btn = (Button) findViewById(R.id.btn); 
     btn.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       onButtonClick(R.id.btn); 
      } 
     }); 
} 

public void onButtonClick(int id) { 

     if (color.equals("b")) { 
      findViewById(id).setBackgroundColor(Color.RED); 
      color = "r"; 
     } else if (color.equals("r")) { 
      findViewById(id).setBackgroundColor(Color.BLUE); 
      color = "b"; 
     } 

    } 
0

вы можете попробовать этот код:

ImageButton mButton; 
int mTrashFlag=0; 

**get the id and implement the on click listener** 


mButton=(ImageButton)findViewById(R.id.bt); 
    mButton.setOnClickListener(this); 

public void onClick(View v) { 
    // TODO Auto-generated method stub 


    if(mTrashFlag==0){ 



     mButton.setBackgroundColor(Color.BLUE); 


     mTrashFlag =1; 
    } 

    else if(mTrashFlag==1){ 

     mTrashFlag=0; 

     mButton.setBackgroundColor(Color.RED); 

    } 

} 
0

Просто включите альфа-значение (FF) так
bt.setBackgroundColor(0x4CB8FB);
будет
bt.setBackgroundColor(0xFF4CB8FB);

Смежные вопросы