2012-01-22 20 views
20

Quiero cambiar el color de fondo de mi vista principal (no un botón o una vista de texto) solo el fondo real que normalmente es negro ... I conseguido este código:Android: cambiar el color de fondo de la actividad (vista principal)

view.setBackgroundColor(0xfff00000); 

este es el interior de un OnClickListener, pero simplemente cambia el fondo del botón ... Por favor, ayúdame, muchas gracias!

+0

Mira mi respuesta aquí http://stackoverflow.com/a/12259787/592042 – David

Respuesta

51

Trate de crear un método en su Activity algo así como ...

public void setActivityBackgroundColor(int color) { 
    View view = this.getWindow().getDecorView(); 
    view.setBackgroundColor(color); 
} 

Entonces llaman desde su OnClickListener pasar en cualquier color que desee.

+0

¡Sí! Funciona, gracias! – moritzg

+0

Me alegro de poder ayudar. – Squonk

+0

Tengo una interfaz de diálogo abierta con un cuadro de texto. Quiero cambiar el color cuando hago clic en "Aceptar". Intenté esta pieza de código y no funcionó. ¿Es porque mi vista está ahora en la interfaz de diálogo en lugar de la actividad principal en sí misma? – Naveen

0

si metes aquí el código completo para que pueda ayudarte. si configura el oyente en XML y llama al color de fondo establecido en Ver para que cambie el color de fondo de la vista significa que es Botton, por lo tanto, ponga el oyente en su actividad y luego cambie el color de su vista

8

i don No sé si es la respuesta a su pregunta, pero puede intentar establecer el color de fondo en el diseño xml de esta manera. Es fácil, siempre funciona

<?xml version="1.0" encoding="utf-8"?> 

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 

    android:orientation="vertical" 

    android:layout_width="fill_parent" 

    android:layout_height="fill_parent" 

android:background="0xfff00000" 

    > 


<TextView 

    android:id="@+id/text_view" 

    android:layout_width="fill_parent" 

    android:layout_height="wrap_content" 

    android:text="@string/hello" 

    /> 



</LinearLayout> 

También puede hacer cosas más extravagantes con fondos mediante la creación de un archivo de fondo XML con gradientes que son frescos y semi transparente, y se refieren a ella para otros usos véase el siguiente ejemplo:

la disposición background.xml

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
<item> 
    <shape> 
     <gradient 
      android:angle="90" 
      android:startColor="#f0000000" 
      android:endColor="#ff444444" 
      android:type="linear" /> 
    </shape> 
</item> 
</selector> 

su diseño

<?xml version="1.0" encoding="utf-8"?> 

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 

    android:orientation="vertical" 

    android:layout_width="fill_parent" 

    android:layout_height="fill_parent" 

android:background="@layout/background" 


    > 


<TextView 

    android:id="@+id/text_view" 

    android:layout_width="fill_parent" 

    android:layout_height="wrap_content" 

    android:text="@string/hello" 

    /> 



</LinearLayout> 
+0

No, quiero que sea dinámico, así que si presiona un botón, cambia inmediatamente ... – moritzg

+0

ahh lo tengo ahora ;-)) – youssoua

+0

Incluso si esto no respondió la pregunta de OPs , respondió la mía. +1 – Jim

1

También puede tratar de proporcionar un Id para el diseño principal y cambiar el fondo de eso a través de la manipulación y recuperación básicas. Por ejemplo:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:id="@+id/hello" 

que luego puede ser seguido por el acceso a través de R.id.hello .... bastante básico y espero que esto ayude :)

6

Sólo añadir este por debajo de una línea de código en el código XML archivo de esa actividad correspondiente:

android:background="@android:color/black" 

lo ayudará con seguridad.

3

Primer método

View someView = findViewById(R.id.randomViewInMainLayout);// get Any child View 

    // Find the root view 
    View root = someView.getRootView() 

    // Set the color 
    root.setBackgroundColor(getResources().getColor(android.R.color.red)); 

Segundo método

Añadir esta línea individual después setContentView (...);

getWindow().getDecorView().setBackgroundColor(Color.WHITE); 

Tercer método

color de fondo conjunto de la rootView

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="vertical" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:background="#FFFFFF" 
android:id="@+id/rootView" 
</LinearLayout> 

Lo importante

rootView.setBackgroundColor(0xFF00FF00); //after 0x the other four pairs are alpha,red,green,blue color. 
Cuestiones relacionadas