Antworten:
Holen Sie sich ein Handle für das verwendete Root-Layout und legen Sie die Hintergrundfarbe darauf fest. Das Root-Layout ist das, mit dem Sie setContentView aufgerufen haben.
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));
Fügen Sie diese einzelne Zeile nach dem setContentView()
Anruf in Ihre Aktivität ein
getWindow().getDecorView().setBackgroundColor(Color.WHITE);
Ich bevorzuge es, nach Themen zu färben
<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
für einen kurzen Moment zuerst sichtbar ist und dann die Layout-Hintergrundfarbe übernimmt. Wenn Sie also zwei verschiedene Farben verwenden, flackert es auf dem Bildschirm.
windowBackground
Betrifft nur den Fensterhintergrund, aber auch colorBackground
alle Ansichten. 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>
Mit anderen Worten, "android: background" ist das Tag in der XML, das Sie ändern möchten.
Wenn Sie den Hintergrundwert dynamisch aktualisieren müssen, gehen Sie wie folgt vor:
In Ihrer onCreate()
Methode:
getWindow().getDecorView().setBackgroundColor(getResources().getColor(R.color.main_activity_background_color));
Außerdem müssen Sie dem Werteordner eine neue XML-Datei mit dem Namen hinzufügen color.xml
und dort eine neue Farbeigenschaft zuweisen:
color.xml:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="main_activity_background_color">#000000</color>
</resources>
Beachten Sie, dass Sie einen color.xml
beliebigen Namen benennen können , ihn jedoch mit dem Code als bezeichnen R.color.yourId
.
BEARBEITEN
Da ist getResources().getColor()
veraltet, verwenden Sie getWindow().getDecorView().setBackgroundColor(ContextCompat.getColor(MainActivity.this, R.color.main_activity_background_color));
stattdessen.
Sie können dies verwenden, um vordefinierte Android-Farben aufzurufen:
element.setBackgroundColor(android.R.color.red);
Wenn Sie eine Ihrer eigenen benutzerdefinierten Farben verwenden möchten, können Sie Ihre benutzerdefinierte Farbe zu strings.xml hinzufügen und dann wie folgt aufrufen.
element.setBackgroundColor(R.color.mycolour);
Wenn Sie jedoch die Farbe in Ihrer layout.xml festlegen möchten, können Sie die folgenden Elemente ändern und zu jedem Element hinzufügen, das sie akzeptiert.
android:background="#FFFFFF"
View randview = new View(getBaseContext());
randview = (View)findViewById(R.id.container);
randview.setBackgroundColor(Color.BLUE);
arbeitete für mich. Danke.
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"));
}
});
}