Ответы:
Получите дескриптор используемого корневого макета, затем установите для него цвет фона. Корневой макет - это то, с чем вы вызвали 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));
root.setBackgroundColor(getResources().getColor(android.R.color.red));
Добавьте эту единственную строку в свою деятельность после setContentView()
звонка
getWindow().getDecorView().setBackgroundColor(Color.WHITE);
Я предпочитаю раскраску по теме
<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
сначала отображается, на короткое время, а затем цвет фона макета берет верх. Поэтому, если вы используете два разных цвета, они будут мерцать на экране.
windowBackground
влияет только на фон окна, но также colorBackground
влияет на все представления. 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>
Другими словами, «android: background» - это тег в XML, который вы хотите изменить.
Если вам нужно динамически обновить значение фона, см. Следующее:
В вашем onCreate()
методе:
getWindow().getDecorView().setBackgroundColor(getResources().getColor(R.color.main_activity_background_color));
Также вам необходимо добавить в папку значений новый файл XML с именем color.xml
и назначить ему новое свойство цвета:
color.xml:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="main_activity_background_color">#000000</color>
</resources>
Обратите внимание, что вы можете назвать color.xml
любое имя, которое хотите, но вы обращаетесь к нему по коду как R.color.yourId
.
РЕДАКТИРОВАТЬ
Поскольку getResources().getColor()
не рекомендуется использовать getWindow().getDecorView().setBackgroundColor(ContextCompat.getColor(MainActivity.this, R.color.main_activity_background_color));
вместо этого.
Вы можете использовать это для вызова предопределенных цветов Android:
element.setBackgroundColor(android.R.color.red);
Если вы хотите использовать один из ваших собственных цветов, вы можете добавить свой собственный цвет в strings.xml, а затем использовать приведенный ниже код для его вызова.
element.setBackgroundColor(R.color.mycolour);
Однако, если вы хотите установить цвет в своем layout.xml, вы можете изменить и добавить приведенный ниже код к любому элементу, который его принимает.
android:background="#FFFFFF"
View randview = new View(getBaseContext());
randview = (View)findViewById(R.id.container);
randview.setBackgroundColor(Color.BLUE);
работал у меня. Спасибо.
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"));
}
});
}