2010-11-08 16 views
29

¿Existe alguna manera de especificar una imagen de fondo alternativa/color para un Botón en el archivo XML que se va a aplicar onClick, o tengo que hacer un Button.setBackground() en el onClickListener?Hacer que un botón de Android cambie el fondo al hacer clic en XML

+0

Para obtener más información y ayuda para la implementación, consulte [los documentos de android] (http://developer.android.com/resources/tutorials/views/hello-formstuff.html). –

Respuesta

94

Para cambiar la imagen mediante el uso de código de

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

O, usando un archivo 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> 

En OnClick, sólo tiene que añadir este código:

ButtonName.setBackgroundDrawable(getResources().getDrawable(R.drawable.ImageName)); 
+0

Gracias, exactamente lo que estaba buscando (lo del estado del artículo ...) – nbarraille

+0

@ David, gracias por esta publicación.Tengo un par de botones de imagen que requieren esta característica (cambiar la imagen al presionar) ¿Qué son los cambios necesarios en Selector & onClick ¿para todos? puedes guiarme? – swiftBoy

+0

¿dónde señala exactamente ese archivo xml en el segundo enfoque? – Paul

6

En la versión más reciente del SDK, usaría el método setBackgroundResource.

public void onClick(View v) { 
    if(v == ButtonName) { 
    ButtonName.setBackgroundResource(R.drawable.ImageResource); 
    } 
} 
1

Probar:

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

Button.setBackgroundResource(R.drawable.nameImage); 

} 

lo recomiendo botón de su uso dentro de LinearLayout para ajustar al tamaño del lineal.

Cuestiones relacionadas