Изменить цвет строки заголовка Android * после * загрузки действия?

#android #android-layout

#Android #android-макет

Вопрос:

Я меняю строку заголовка, когда версия Android поддерживает использование кода, размещенного ниже. Но, похоже, я не могу изменить цвет строки заголовка после фактической загрузки действия.

Смотрите следующий пример:

 activity.getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.page_title);
LinearLayout ll = ((LinearLayout)activity.getWindow().findViewById(R.id.page_title_bg));
ll.setBackgroundResource(R.drawable.page_title_bg_app_online);
  

Макет очень упрощенный, содержит только фоновый макет и текстовое представление для отображения заголовка приложения.

Я попытался настроить фоновый ресурс с помощью setbackbroundresrouceно не удалось добиться появления измененного заголовка. Я также пытался аннулировать макет после внесения изменений.

Ответ №1:

Просто мысль: вы пытались установить фон вашего текстового представления (не макет)?

Странно… Просто попробовал, и у меня все работает нормально:

     boolean isTitleCustomizible;
    try {
        isTitleCustomizible = requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
    } catch (Exception e) {
        isTitleCustomizible = false;
    }

    super.setContentView(resId);

    if (isTitleCustomizible) {
        getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE,
                R.layout.title_bar);

        View root = getWindow().findViewById(R.id.toolBarRoot);
        if (root != null) {
            root.setBackgroundResource(android.R.drawable.editbox_background_normal);
        }
    }
  

Код в onClick:

         private boolean toggle;

        @Override
        public void onClick(View v) {
            View root = findViewById(R.id.toolBarRoot);
            if (root != null) {
                if (toggle)
                    root.setBackgroundResource(0);
                else
                    root.setBackgroundResource(android.R.drawable.editbox_background_normal);
                toggle = !toggle;
            }
        }
  

Комментарии:

1. Нет, но я не верю, что это поможет… Для layout_width текстового представления установлено значение wrap_content

2. Почему бы и нет? Лучше проверить и убедиться, чем просто поверить 🙂

3. Это работает для меня, но только один раз, вы пробовали устанавливать фон заголовка из события (например, нажатие кнопки)?

4. Спасибо, я создам небольшое тестовое приложение, чтобы дублировать то, что происходит не так с кодом 🙂