Макет координатора и прозрачная строка состояния

В настоящее время я пытаюсь использовать макет координатора, чтобы свернуть изображение в теме с прозрачной строкой состояния, однако меня беспокоят три проблемы:

  1. Когда активность запущена, изображение не отображается за строкой состояния (если я удалю макет координатора, он работает);
  2. Когда я прокручиваю вверх, я хотел бы изменить строку состояния на сплошной цвет, но часть изображения остается видимой;
  3. После добавления AppBarLayout и CollapsingToolbarLayout нижняя часть изображения — с той же высотой строки состояния — обрезается;

изображение под строкой состояния, даже если в теме оно настроено как прозрачное Изображение остается под строкой состояния, даже если в теме оно настроено как прозрачное

Строка состояния после свертывания — она должна быть сплошного цвета Строка состояния после свертывания — должна быть сплошного цвета

Код:

<?xml version="1.0" encoding="utf-8"?>

<android.support.design.widget.CoordinatorLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/colorPrimary"
    android:orientation="vertical">

    <android.support.design.widget.AppBarLayout
        android:id="@+id/appbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:fitsSystemWindows="true">

        <android.support.design.widget.CollapsingToolbarLayout
            android:id="@+id/collapsing_toolbar"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:fitsSystemWindows="true"
            app:layout_scrollFlags="scroll|enterAlways|enterAlwaysCollapsed"
            app:statusBarScrim="@color/colorPrimary"
            app:contentScrim="@color/colorPrimaryDark">

            <RelativeLayout
                android:id="@+id/cover_wrapper"
                android:layout_width="match_parent"
              android:layout_height="@dimen/rsc_character_details_cover_height">

                <ImageView
                    android:id="@+id/cover"
                    android:layout_width="match_parent"                 android:layout_height="@dimen/rsc_character_details_cover_height"/>
            </RelativeLayout>
        </android.support.design.widget.CollapsingToolbarLayout>
    </android.support.design.widget.AppBarLayout>

    <android.support.v4.widget.NestedScrollView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/cover_wrapper"
        app:layout_behavior="@string/appbar_scrolling_view_behavior">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical"
            android:weightSum="6">

           ...
        </LinearLayout>
    </android.support.v4.widget.NestedScrollView>
</android.support.design.widget.CoordinatorLayout>

Вот как я устанавливаю прозрачность строки состояния:

<item name="android:windowTranslucentStatus">true</item>

Любая помощь будет очень признательна. Большое тебе спасибо.


person E. Fernandes    schedule 01.05.2016    source источник
comment
Это потому, что CollapsingToolbarLayout должен быть оболочкой для Toolbar.   -  person tachyonflux    schedule 01.05.2016


Ответы (1)


Для проблем с изображением, которое не отображается за строкой состояния и обрезается, все, что должно отображаться в области строки состояния, должно иметь android:fitsSystemWindows="true". т.е. ваши cover_wrapper и cover.

person tachyonflux    schedule 01.05.2016
comment
Вот и все! Большое тебе спасибо - person E. Fernandes; 01.05.2016
comment
Разве не наоборот? Из документов: android:fitsSystemWindows Логический внутренний атрибут для настройки макета представления на основе системных окон, таких как строка состояния. Если true, корректирует заполнение этого представления, чтобы оставить место для системных окон. - person GPack; 05.05.2016
comment
Некоторые компоненты библиотеки дизайна @GPack изменяют поведение флага medium.com/google-developers/ - person tachyonflux; 05.05.2016
comment
@karaokyo Из прочтения известного поста по ссылке я понимаю, что изменяется только поведение первой глубины, а не значение true (заполнение для резервирования места для системных декоров) и false (без заполнения: вид будет за декорациями системы). Я не прав? - person GPack; 05.05.2016
comment
@GPack, проблема в том, что я не знаю, что ты пытаешься от меня получить. Вы цитируете какую-то документацию, когда на практике это работает определенным образом, и сами в этом убедитесь. - person tachyonflux; 05.05.2016