Comment définir la couleur d’arrière-plan d’une activité sur blanc par programmation?

Comment définir la couleur d’arrière-plan d’une activité sur blanc par programmation?

Obtenez un handle à la disposition racine utilisée, puis définissez la couleur d’arrière-plan sur cela. La disposition racine est celle avec laquelle vous avez appelé 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)); 

Ajoutez cette ligne unique dans votre activité, après l’ setContentView() de setContentView()

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

Je préfère la coloration par thème

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

En d’autres termes, “android: background” est la balise dans le XML que vous souhaitez modifier.

Si vous devez mettre à jour dynamicment la valeur d’arrière-plan, consultez les éléments suivants:

Exercice: Changer la couleur de fond, par SeekBar

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 append votre couleur personnalisée à ssortingngs.xml, puis utiliser le code ci-dessous pour l’appeler.

 element.setBackgroundColor(R.color.mycolour); 

Cependant, si vous souhaitez définir la couleur dans votre fichier layout.xml, vous pouvez modifier et append ce qui suit à tout élément qui l’accepte.

 android:background="#FFFFFF" 

Dans votre méthode onCreate() :

 getWindow().getDecorView().setBackgroundColor(getResources().getColor(R.color.main_activity_background_color)); 

Vous devez également append un nouveau fichier XML appelé color.xml dossier des color.xml et y affecter une nouvelle propriété de couleur:

color.xml:

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

Notez que vous pouvez nommer le color.xml comme vous le souhaitez, mais vous vous en référez au code R.color.yourId .

MODIFIER

Comme getResources().getColor() est obsolète, utilisez getWindow().getDecorView().setBackgroundColor(ContextCompat.getColor(MainActivity.this, R.color.main_activity_background_color)); au lieu.

Pour obtenir la vue racine définie dans votre fichier xml, sans la barre d’action, vous pouvez utiliser ceci:

 View root = ((ViewGroup) findViewById(android.R.id.content)).getChildAt(0); 

Donc, pour changer de couleur en blanc:

 root.setBackgroundResource(Color.WHITE); 
 View randview = new View(getBaseContext()); randview = (View)findViewById(R.id.container); randview.setBackgroundColor(Color.BLUE); 

travaillé pour moi Je vous remercie.

 final View rootView = findViewById(android.R.id.content); rootView.setBackgroundResource(...); 
 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")); } }); } 

J’avais un problème similaire et j’ai suivi les étapes mentionnées dans les réponses ci-dessus. Je vais partager ce qui a fonctionné pour moi.

J’utilisais un RecyclerView et j’avais défini une couleur d’arrière-plan pour l’article. Cependant, il semblait étrange que le nombre d’éléments ne corresponde pas à l’écran

Ma mise en page initiale

J’ai ensuite utilisé la fonction

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

Et appelé la fonction setActivityBackgroundColor(R.color.colorAccent); dans mon code dans une autre fonction. Cela a conduit à cette disposition . Assez bizarre.

Je l’ai finalement corrigé en suivant les suggestions de KitKat .

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

Cela a finalement résolu le problème .

EDIT: La solution a commencé à générer une erreur si le programme RecyclerView n’était pas rempli. Dans ce cas, je mets un drapeau pour vérifier si la vue est vide ou non.

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

Cela fonctionne comme un charme maintenant.