Как я могу установить цвет фона операции в белый программно?
Как установить цвет фона операции на белый программным путем?
Ответ 1
Получите дескриптор используемого корневого макета, затем установите для него цвет фона. Корневая компоновка - это то, что вы назвали 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));
Ответ 2
Добавьте эту единственную строку в свою деятельность, после setContentView()
вызов
getWindow().getDecorView().setBackgroundColor(Color.WHITE);
Ответ 3
Я предпочитаю раскрашивать по темам
<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>
Ответ 4
?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, который вы хотите изменить.
Если вам необходимо динамически обновлять фоновое значение, см. следующее:
Ответ 5
Вы можете использовать это для вызова предопределенных цветов андроида:
element.setBackgroundColor(android.R.color.red);
Если вы хотите использовать один из своих собственных цветов, вы можете добавить свой собственный цвет в strings.xml, а затем использовать ниже для его вызова.
element.setBackgroundColor(R.color.mycolour);
Однако, если вы хотите установить цвет в своем макете .xml, вы можете изменить и добавить ниже к любому элементу, который его принимает.
android:background="#FFFFFF"
Ответ 6
В вашем методе 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));
.
Ответ 7
Чтобы получить представление корня, определенное в вашем XML файле, без панели действий, вы можете использовать это:
View root = ((ViewGroup) findViewById(android.R.id.content)).getChildAt(0);
Итак, чтобы изменить цвет на белый:
root.setBackgroundResource(Color.WHITE);
Ответ 8
View randview = new View(getBaseContext());
randview = (View)findViewById(R.id.container);
randview.setBackgroundColor(Color.BLUE);
работал у меня. спасибо.
Ответ 9
final View rootView = findViewById(android.R.id.content);
rootView.setBackgroundResource(...);
Ответ 10
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"));
}
});
}
Ответ 11
Использовать этот:
myActivity.setBackgroundColor(ContextCompat.getColor(this, R.color.colorWhite));
Ответ 12
У меня была похожая проблема, и я следовал шагам, упомянутым в ответах, приведенных выше. Я поделюсь, что сработало для меня.
Я использовал RecyclerView и установил цвет фона для элемента. Тем не менее, это выглядело странно, когда количество предметов не умещалось на экране
Затем я использовал функцию
public void setActivityBackgroundColor(int color) {
View view = this.getWindow().getDecorView();
view.setBackgroundColor(color);
}
И вызвал функцию setActivityBackgroundColor(R.color.colorAccent);
в моем коде в другой функции. Это привело к такой раскладке. Довольно странно.
Я наконец исправил это, следуя тому, что предложил KitKat.
public void setActivityBackgroundColor(int color) {
View view = this.getWindow().getDecorView();
view.setBackgroundResource(color);
}
Это наконец исправило это.
РЕДАКТИРОВАТЬ: решение начало выдавать ошибку, если RecyclerView не был заполнен. В этом случае я установил флаг, чтобы проверить, является ли представление пустым или нет.
public void setActivityBackgroundColor(int color) {
View view = this.getWindow().getDecorView();
if (dataIsNull) {
view.setBackgroundColor(color);
}
else {
view.setBackgroundResource(color);
}
}
Теперь это работает как шарм.