2012-01-22 16 views
20

Voglio cambiare il colore di sfondo della mia vista principale (non un pulsante o una vista testo) solo lo sfondo reale che è normalmente nero ... I ottenuto questo codice:Android: modifica dello sfondo-colore dell'attività (vista principale)

view.setBackgroundColor(0xfff00000); 

questo è all'interno di un OnClickListener, ma cambia solo lo sfondo del pulsante ... Per favore mi aiuti, grazie mille!

+0

Guardate la mia risposta qui http://stackoverflow.com/a/12259787/592042 – David

risposta

51

provare a creare un metodo nella Activity qualcosa di simile ...

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

Poi lo chiamano dal OnClickListener passare in qualsiasi colore desiderato.

+0

Sì !! Funziona, grazie! – moritzg

+0

Contento di aver potuto aiutare. – Squonk

+0

Ho un'interfaccia di dialogo aperta con una casella di testo. Voglio cambiare il colore quando clicco su "OK". Ho provato questo pezzo di codice e non ha funzionato. È perché la mia vista è proprio ora nell'interfaccia di dialogo piuttosto che l'attività principale stessa? – Naveen

0

se metti qui il tuo codice completo così posso aiutarti. se si imposta il listener in XML e si chiama il colore di sfondo impostato su View in modo che cambi il colore di sfondo della vista significa che Botton metterà il listener nelle proprie attività e quindi cambierà il colore della vista

8

i don Non so se è la risposta alla tua domanda, ma puoi provare a impostare il colore di sfondo nel layout xml come questo. E 'facile, funziona sempre

<?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> 

Si può anche fare le cose più fantasia con sfondi con la creazione di un file di sfondo xml con pendenze che sono fresco e semi trasparenti, e si riferiscono ad esso per altro uso vedi esempio qui sotto:

il layout 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> 

il layout

<?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, voglio che sia dinamico, quindi se premi un pulsante cambia immediatamente ... – moritzg

+0

ahh capito ora ;-)) – youssoua

+0

Anche se questo non ha risposto alla domanda dei PO , ha risposto al mio. +1 – Jim

1

Puoi anche provare a fornire un ID per il layout principale e modificarne lo sfondo tramite la manipolazione e il recupero di base. Ad esempio:

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

che possono poi essere seguita accedendo attraverso R.id.hello .... piuttosto semplice e spero che questo aiuta :)

6

Basta aggiungere questo di sotto di un codice di linea in XML file di quell'attività corrispondente:

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

ti aiuterà di sicuro.

3

Primo metodo

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)); 

Secondo metodo

Aggiungi questa singola riga dopo setContentView (...);

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

Terzo metodo

colore di sfondo impostato al 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> 

cosa importante

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