Ответы:
Получите дескриптор используемого корневого макета, затем установите для него цвет фона. Корневой макет - это то, с чем вы вызвали 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"));
}
});
}