2010-05-24 35 views
12

Tengo una aplicación de Android simple, con 3 botones. Cuando hago clic en el primer botón, quiero cambiar el color de fondo del diseño (que ahora es blanco ... quiero cambiar de otro color, cuando presiono el botón). ¿Cómo puedo hacer esto?cambiar el color de fondo del diseño en Android

En ese botón, tengo un evento myClickHndler

public void myClickHandler(View view) { 
    switch (view.getId()) { 
    case R.id.Button01: 
     text.setText("Button 1 was clicked"); 
     break; 
    case R.id.Button03: 
     //text.setText("Button 3 was clicked"); 
        .................... // ? 
     break; 
    } 
} 

Gracias!

+0

lo siento, cuando hago clic en el botón tercera quiero cambiar el color, no en el 1er botón .. ¡Gracias! – qwerty

Respuesta

23

Dar una identificación a su LinearLayout así:

<LinearLayout android:id="@+id/laidout" 
     ...> 

y después de su clase java decir:

... 
case R.id.Button03: 
//text.setText("Button 3 was clicked"); 
    .................... // ? 
mlayout= findViewById(R.id.laidout); 
// set the color 
mlayout.setBackgroundColor(Color.WHATEVER); 
// you can use setBackgroundResource() and pass appropriate ID 
// if you want a drawable bundled as resource in the background 
mlayout.setBackgroundResource(R.drawable.background_img); 
break; 
... 

[EDIT]: código añadido para lo solicitado en el comentario

+0

Ok, gracias! Y si quiero cambiar el fondo del diseño con una imagen .png, ¿cómo puedo hacer esto? ¿Es posible? Tengo una imagen png en la carpeta res/drawable, y quiero mostrar como fondo para el diseño. Saludos, – qwerty

+0

Sí, puedes hacerlo ... He agregado código en mi publicación anterior. Echale un vistazo. – Samuh

+0

Esto no parece funcionar en algunos casos. La llamada a findViewById (R.id.laidout) arroja una RuntimeException cuando se realiza dentro de onCreate o onResume (no estoy seguro acerca de otros lugares). –

3

Si desea cambiar dinámicamente el fondo, use

YourView.setBackgroundColor(Color.argb(255, 255, 255, 255)); 
0

Prueba el siguiente código ...

Código:

Resources res = getResources(); 
Drawable drawable = res.getDrawable(R.drawable.newImage); 
LinearLayout linearLayout = (LinearLayout)findViewById(R.id.GameLayout); 
linearLayout.setBackgroundDrawable(drawable); 

Espero que esto ayude.

1

setBackgroundDrawable está en desuso

Pruebe el siguiente código simple ...

Código de Trabajo

:

LinearLayout linearLayout = (LinearLayout)findViewById(R.id.mainLayout); 
linearLayout.setBackgroundResource(R.drawable.backrepeat_blue); 

disfrutar

Cuestiones relacionadas