Сделать кнопку Android изменить фон при нажатии через XML - PullRequest
33 голосов
/ 08 ноября 2010

Есть ли способ указать альтернативное фоновое изображение / цвет для кнопки в XML-файле, который будет применяться onClick, или мне нужно сделать Button.setBackground() в onClickListener?

Ответы [ 4 ]

102 голосов
/ 08 ноября 2010

Чтобы изменить изображение с помощью кода

public void onClick(View v) {
   if(v == ButtonName) {
     ButtonName.setImageResource(R.drawable.ImageName);
   }
}

Или с помощью файла XML:

<?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/login_selected" /> <!-- pressed -->
  <item android:state_focused="true"
   android:drawable="@drawable/login_mouse_over" /> <!-- focused -->
  <item android:drawable="@drawable/login" /> <!-- default -->
</selector>

В OnClick, просто добавьте этот код:

ButtonName.setBackgroundDrawable(getResources().getDrawable(R.drawable.ImageName));
7 голосов
/ 26 января 2013

В последней версии SDK вы должны использовать метод setBackgroundResource.

public void onClick(View v) {
   if(v == ButtonName) {
     ButtonName.setBackgroundResource(R.drawable.ImageResource);
   }
}
2 голосов
/ 11 мая 2015
public void methodOnClick(View view){

Button.setBackgroundResource(R.drawable.nameImage);

}

Я рекомендую использовать кнопку внутри LinearLayout для настройки размера Linear.

1 голос
/ 17 июня 2013

Попробуйте:

public void onclick(View v){
            ImageView activity= (ImageView) findViewById(R.id.imageview1);
        button1.setImageResource(R.drawable.buttonpressed);}
...