6

Я пытаюсь включить windowTranslucentStatus и AppBarLayout с Toolbar помеченных с app:layout_scrollFlags="scroll|enterAlways"Использование windowTranslucentStatus со скрытой панели инструментов

тестирования одновременно на API, 18, 19 и 22 (с левой стороны).

Case study

Проблема на самом высоком API, где панель инструментов частично видна под статусной. Я пробовал много сочетаний стилей, но это самое близкое мне.

В стилях я использую:

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> 
    <item name="android:colorPrimary" tools:targetApi="lollipop">@color/primary</item> 
    <item name="android:colorPrimaryDark" tools:targetApi="lollipop">@color/primary_dark</item> 
    <item name="colorPrimary">@color/primary</item> 
    <item name="colorPrimaryDark">@color/primary_dark</item> 
    <item name="colorAccent">@color/primary</item> 
    <item name="android:colorAccent" tools:targetApi="lollipop">@color/primary</item> 
    <item name="android:windowTranslucentStatus" tools:targetApi="kitkat">true</item> 
    <item name="android:windowBackground">@color/background</item> 
    <item name="android:windowActionBarOverlay">true</item> 
    <item name="android:windowContentOverlay">@null</item> 
</style> 

Вот мой макет XML:

<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
android:id="@+id/coordinator_layout" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:background="?attr/colorPrimary" 
android:fitsSystemWindows="true"> 

<android.support.design.widget.AppBarLayout 
    android:id="@+id/appbar" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"> 

    <android.support.v7.widget.Toolbar 
     android:id="@+id/toolbar" 
     android:layout_width="match_parent" 
     android:layout_height="?attr/actionBarSize" 
     android:minHeight="?attr/actionBarSize" 
     app:layout_scrollFlags="scroll|enterAlways" 
     app:popupTheme="@style/ThemeOverlay.AppCompat.Light" /> 

</android.support.design.widget.AppBarLayout> 

<android.support.v7.widget.RecyclerView 
    android:id="@+id/recycler_view" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="@color/background" 
    app:layout_behavior="@string/appbar_scrolling_view_behavior" /> 


<android.support.design.widget.FloatingActionButton 
    android:id="@+id/add_button" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    app:backgroundTint="@color/green" 
    app:layout_anchor="@id/recycler_view" 
    app:layout_anchorGravity="bottom|right|end" /> 

Я создал пример приложения, которое доступно на github

Есть ли что-то в этой загадке?

ответ

4

Исправлено. Это может быть не самое красивое решение, но оно wokrs (проверено на 19 и 22). Я добавил отрицательную маржу к компоновке координатора и положительную маржу к панели инструментов (25dp, так как это высота строки состояния).

<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:id="@+id/coordinator_layout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="?attr/colorPrimary" 
    android:fitsSystemWindows="true" 
    android:layout_marginTop="-25dp"> 

    <android.support.design.widget.AppBarLayout 
     android:id="@+id/appbar" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"> 

     <android.support.v7.widget.Toolbar 
      android:id="@+id/toolbar" 
      android:layout_width="match_parent" 
      android:layout_height="?attr/actionBarSize" 
      android:minHeight="?attr/actionBarSize" 
      app:layout_scrollFlags="scroll|enterAlways" 
      app:popupTheme="@style/ThemeOverlay.AppCompat.Light" 
      android:layout_marginTop="25dp"/> 

    </android.support.design.widget.AppBarLayout> 

    <android.support.v7.widget.RecyclerView 
     android:id="@+id/recycler_view" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:background="@color/background" 
     app:layout_behavior="@string/appbar_scrolling_view_behavior" /> 


    <android.support.design.widget.FloatingActionButton 
     android:id="@+id/add_button" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     app:backgroundTint="@color/green" 
     app:layout_anchor="@id/recycler_view" 
     app:layout_anchorGravity="bottom|right|end" /> 

</android.support.design.widget.CoordinatorLayout> 

enter image description here

+0

Это на самом деле может работать ... проверит позже –

+0

Хорошо взломать, работая над всеми 3 упомянутыми мной API! :) –

+0

Рад я мог бы помочь :) – crysxd

0

Вы пробовали поставить следующее в RecyclerView?

app:layout_behavior="@string/appbar_scrolling_view_behavior" 

Я думаю, что это необходимо для того, чтобы работать с CoordinatorLayout. Также проверьте, обновлена ​​ли ваша версия com.android.support:recyclerview-v7.

+0

Я, должно быть, удалил его из кода случайно –

1

Я установил его с установкой

android:fitsSystemWindows="false" on CoordinatorLayout. 

Надежда, что помогает вам также!

+0

резервуары работают правильно – HPbyP