Réponses:
Obtenez une poignée de la disposition racine utilisée, puis définissez la couleur d'arrière-plan dessus. La disposition racine est ce que vous avez appelé setContentView avec.
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));
Ajoutez cette seule ligne dans votre activité, après setContentView()
appel
getWindow().getDecorView().setBackgroundColor(Color.WHITE);
Je préfère la coloration par thème
<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
est visible en premier, pendant un bref instant, puis la couleur d'arrière-plan de la mise en page prend le dessus. Donc, si vous utilisez deux couleurs différentes, cela clignotera sur l'écran.
windowBackground
n'affecte que l'arrière-plan de la fenêtre, mais colorBackground
affecte également toutes les vues. 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>
En d'autres termes, "android: background" est la balise du XML que vous souhaitez modifier.
Si vous devez mettre à jour dynamiquement la valeur d'arrière-plan, consultez les éléments suivants:
Dans votre onCreate()
méthode:
getWindow().getDecorView().setBackgroundColor(getResources().getColor(R.color.main_activity_background_color));
Vous devez également ajouter au dossier des valeurs un nouveau fichier XML appelé color.xml
et y attribuer une nouvelle propriété de couleur:
color.xml:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="main_activity_background_color">#000000</color>
</resources>
Notez que vous pouvez nommer le color.xml
nom de votre choix, mais vous y faites référence par code comme R.color.yourId
.
ÉDITER
Parce que getResources().getColor()
c'est obsolète, utilisez à la getWindow().getDecorView().setBackgroundColor(ContextCompat.getColor(MainActivity.this, R.color.main_activity_background_color));
place.
Vous pouvez l'utiliser pour appeler des couleurs Android prédéfinies:
element.setBackgroundColor(android.R.color.red);
Si vous souhaitez utiliser l'une de vos propres couleurs personnalisées, vous pouvez ajouter votre couleur personnalisée à strings.xml, puis utiliser ce qui suit pour l'appeler.
element.setBackgroundColor(R.color.mycolour);
Cependant, si vous souhaitez définir la couleur dans votre layout.xml, vous pouvez modifier et ajouter ce qui suit à tout élément qui l'accepte.
android:background="#FFFFFF"
View randview = new View(getBaseContext());
randview = (View)findViewById(R.id.container);
randview.setBackgroundColor(Color.BLUE);
travaillé pour moi. Merci.
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"));
}
});
}