web-dev-qa-db-fra.com

Comment définir la couleur de fond d'une activité sur blanc par programme?

Comment définir la couleur de fond d'une activité en blanc par programme?

123
SJS

Obtenez une poignée pour la mise en page racine utilisée, puis définissez la couleur d'arrière-plan sur celle-ci. 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));
134
Hamy

Ajouter cette seule ligne dans votre activité, après l'appel de setContentView()

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

Je préfère colorier 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>
79
David
?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 dans le XML que vous souhaitez modifier.

Si vous devez mettre à jour de manière dynamique la valeur d'arrière-plan, consultez les éléments suivants:

Exercice: Changer la couleur de fond, par SeekBar

58
I82Much

Vous pouvez utiliser cette option pour appeler des couleurs prédéfinies Android:

element.setBackgroundColor(Android.R.color.red);

Si vous souhaitez utiliser l'une de vos couleurs personnalisées, vous pouvez ajouter votre couleur personnalisée à strings.xml, puis utiliser les éléments ci-dessous pour l'appeler.

element.setBackgroundColor(R.color.mycolour);

Toutefois, si vous souhaitez définir la couleur dans votre layout.xml, vous pouvez modifier et ajouter le texte ci-dessous à tout élément qui l'accepte.

Android:background="#FFFFFF"
7
Luke Alderton

Dans votre méthode onCreate():

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

Vous devez également ajouter au dossier de valeurs un nouveau fichier XML appelé color.xml et y attribuer une nouvelle propriété color:

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 comme vous le souhaitez, mais vous le nommez par le code R.color.yourId.

EDIT

Puisque getResources().getColor() est obsolète, utilisez plutôt getWindow().getDecorView().setBackgroundColor(ContextCompat.getColor(MainActivity.this, R.color.main_activity_background_color));.

7
God

Pour obtenir la vue racine définie dans votre fichier xml, sans 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);
3
KitKat
View randview = new View(getBaseContext());
randview = (View)findViewById(R.id.container);
randview.setBackgroundColor(Color.BLUE);

a travaillé pour moi. Merci.

3
Hemal Adani
final View rootView = findViewById(Android.R.id.content);
rootView.setBackgroundResource(...);
1
rds
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"));
        }
    });
}
1
saleem kalro

J'avais un problème similaire et j'ai suivi les étapes mentionnées dans les réponses données 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'élément. 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 mise en page . Assez bizarre.

Je l'ai finalement résolu en suivant ce que KitKat suggéré.

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

Ceci finalement le fixe .

EDIT: La solution a commencé à générer une erreur si 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.

0
anshajkhare

Utilisez ceci :

myActivity.setBackgroundColor(ContextCompat.getColor(this, R.color.colorWhite));
0
Ali Khaki