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