Jak programowo ustawić kolor tła działania na biały?


Odpowiedzi:


142

Uzyskaj uchwyt do używanego układu głównego, a następnie ustaw na nim kolor tła. Układ główny jest tym, z czym nazwiesz 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));

Kiedy to robię, Eclipse oznacza to „Powinien przekazać rozwiązany kolor zamiast identyfikatora zasobu tutaj: getResources (). GetColor (android.R.color.red)”.
— joriki

25
Zmień ostatnią linię naroot.setBackgroundColor(getResources().getColor(android.R.color.red));
— Luis Mendo

Ta odpowiedź działa; ale nadal nie jest całkowicie zautomatyzowana, jak twierdzi pytający. Proponuję odpowiedź Arunkumara poniżej.
— KVISH

263

Dodaj tę pojedynczą linię do swojej aktywności po setContentView()rozmowie

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

4
Zgoda. to zmienia kolor okna przed zastosowaniem układu głównego, zaakceptowana odpowiedź zmienia kolor elementu głównego w układzie aktywności
— LairdPleng

1
Myślę, że ten powinien być właściwy, jeśli chcesz tylko ustawić kolor tła aktywności.
— shanwu

ma moje +1, ponieważ zmienia kolor okna głównego
— mparkes

To zdecydowanie najlepsza odpowiedź
— 1QuickQuestion

To najłatwiejsza metoda. Właściwie lepsze niż zaakceptowane!
— Dinith

85

Wolę kolorowanie tematyczne

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

22
Jaka jest różnica między windowBackground i colorBackground?
— AlikElzin-kilaka

1
Po prostu ustaw windowBackground i działa dobrze. Jaki jest pożytek z colorBackground?
— codezjx

8
@ AlikElzin-kilaka: różnica polega na tym, że po uruchomieniu aplikacji android:windowBackgroundnajpierw jest widoczny, przez krótką chwilę, a potem kolor tła układu przejmuje. Więc jeśli użyjesz dwóch różnych kolorów, będzie migotać na ekranie.
— Idź do

2
windowBackgroundwpływa tylko na tło okna, ale colorBackgroundma również wpływ na wszystkie widoki. stackoverflow.com/questions/26266221/…
— fdermishin

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

Innymi słowy, „android: background” to znacznik w kodzie XML, który chcesz zmienić.

Jeśli chcesz dynamicznie aktualizować wartość tła, zobacz:

Ćwiczenie: Zmień kolor tła, SeekBar


Mm dobra uwaga. Cóż, niezależnie od tego, link, który podałem, całkiem łatwo odpowiada na to pytanie.
— I82Much

nie sądzę, żebyś podawał mi właściwe wartości dla koloru !! dostałem to z #FFFFFF
— SJS

To dobra odpowiedź dla tych z nas, którzy chcą to zrobić w xml i dotarli tutaj przez wyszukiwarkę Google.
— Kacy,

9

W Twojej onCreate()metodzie:

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

Musisz także dodać do folderu wartości nowy plik XML o nazwie color.xml i przypisać tam nową właściwość koloru:

color.xml:

<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="main_activity_background_color">#000000</color>
</resources>

Pamiętaj, że możesz nazwać color.xmldowolną nazwę, ale odwołujesz się do niej kodem jako R.color.yourId.

EDYTOWAĆ

Ponieważ getResources().getColor()jest przestarzały, użyj getWindow().getDecorView().setBackgroundColor(ContextCompat.getColor(MainActivity.this, R.color.main_activity_background_color)); zamiast niego.


8

Możesz użyć tego do wywołania predefiniowanych kolorów Androida:

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

Jeśli chcesz użyć jednego z własnych kolorów niestandardowych, możesz dodać swój kolor niestandardowy do strings.xml, a następnie użyć poniższego, aby go wywołać.

element.setBackgroundColor(R.color.mycolour);

Jeśli jednak chcesz ustawić kolor w swoim layoucie.xml, możesz zmodyfikować i dodać poniższe do dowolnego elementu, który go akceptuje.

android:background="#FFFFFF"

Jeśli używam pierwszej techniki, pojawia się ostrzeżenie, że faktycznie powinien być dostępny w ten sposób: getResources (). GetColor (android.R.color.black);

3

Aby uzyskać widok główny zdefiniowany w pliku xml, bez paska akcji, możesz użyć tego:

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

Tak więc, aby zmienić kolor na biały:

root.setBackgroundResource(Color.WHITE);

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

pracował dla mnie. Dziękuję Ci.


Ta odpowiedź znajduje się w kolejce recenzji postów niskiej jakości, ponieważ jest to tylko kod bez wyjaśnienia. Popraw swoją odpowiedź, wyjaśniając, co robi Twój kod i jak odpowiada na pytanie. Zapoznaj się z tymi poradami dotyczącymi udzielania pomocnych odpowiedzi na pytania dotyczące programowania .
— Adi Inbar,

2
Trochę zabawne, że to wyraźnie ustawia tło na niebieskie, a nie białe, zgodnie z życzeniem.
— Konrad Lindenbach

1
final View rootView = findViewById(android.R.id.content);
rootView.setBackgroundResource(...);

1
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"));
        }
    });
}
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.