Risposte:
Ottieni un handle per il layout di root utilizzato, quindi imposta il colore di sfondo su quello. Il layout di root è quello che hai chiamato setContentView.
setContentView(R.layout.main);
// Now get a handle to any View contained
// within the main layout you are using
View someView = findViewById(R.id.randomViewInMainLayout);
// Find the root view
View root = someView.getRootView();
// Set the color
root.setBackgroundColor(getResources().getColor(android.R.color.red));
root.setBackgroundColor(getResources().getColor(android.R.color.red));
Aggiungi questa linea singola alla tua attività, dopo la setContentView()chiamata
getWindow().getDecorView().setBackgroundColor(Color.WHITE);
Preferisco colorare per tema
<style name="CustomTheme" parent="android:Theme.Light">
<item name="android:windowBackground">@color/custom_theme_color</item>
<item name="android:colorBackground">@color/custom_theme_color</item>
</style>
android:windowBackgroundè visibile per prima, per un breve momento, quindi il colore di sfondo del layout prende il sopravvento. Quindi, se usi due colori diversi, lampeggerà sullo schermo.
windowBackgroundinfluenza solo lo sfondo della finestra, ma colorBackgroundinfluenza anche tutte le viste. stackoverflow.com/questions/26266221/...
?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/myScreen"
</LinearLayout>
In altre parole, "android: background" è il tag nell'XML che si desidera modificare.
Se è necessario aggiornare dinamicamente il valore di sfondo, vedere quanto segue:
Nel tuo onCreate()metodo:
getWindow().getDecorView().setBackgroundColor(getResources().getColor(R.color.main_activity_background_color));
Inoltre è necessario aggiungere alla cartella dei valori un nuovo file XML chiamato color.xml e assegnare una nuova proprietà di colore:
color.xml:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="main_activity_background_color">#000000</color>
</resources>
Nota che puoi nominare color.xmlqualsiasi nome tu voglia ma ti riferisci ad esso come codiceR.color.yourId .
MODIFICARE
Perché getResources().getColor()è deprecato, utilizzare getWindow().getDecorView().setBackgroundColor(ContextCompat.getColor(MainActivity.this, R.color.main_activity_background_color));
invece.
Puoi usarlo per chiamare colori Android predefiniti:
element.setBackgroundColor(android.R.color.red);
Se desideri utilizzare uno dei tuoi colori personalizzati, puoi aggiungere il tuo colore personalizzato a strings.xml e quindi utilizzare il seguente per chiamarlo.
element.setBackgroundColor(R.color.mycolour);
Tuttavia, se si desidera impostare il colore in layout.xml, è possibile modificare e aggiungere quanto segue a qualsiasi elemento che lo accetti.
android:background="#FFFFFF"
View randview = new View(getBaseContext());
randview = (View)findViewById(R.id.container);
randview.setBackgroundColor(Color.BLUE);
ha funzionato per me. grazie.
Button btn;
View root;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn = (Button)findViewById(R.id.button);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
root =findViewById(R.id.activity_main).getRootView();
root.setBackgroundColor(Color.parseColor("#FFFFFF"));
}
});
}