Відповіді:
Отримайте ручку до використовуваної верстки кореня, а потім встановіть на цьому колір фону. Макет кореня - це те, з чим ви назвали 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.
EDIT
Оскільки 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"));
}
});
}