Как установить цвет фона операции на белый программным путем?

Как я могу установить цвет фона операции в белый программно?

Ответ 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, который вы хотите изменить.

Если вам необходимо динамически обновлять фоновое значение, см. следующее:

Упражнение: измените цвет фона, выбрав SeekBar

Ответ 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);
        }
    }

Теперь это работает как шарм.