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.