5

Я недавно столкнулся с проблемой расположения координаторов. Когда я пытаюсь создать простой сворачиваемый макет панели инструментов, как показано на примере this, панель инструментов появляется под панелью состояния, как показано на скриншоте ниже (на устройствах preLolipop все работает отлично, потому что приложение не подтягивается под панелью состояния).Свертывание панели инструментов - панель инструментов в строке состояния

toolbar under statusbar (see back arrow)

Фрагмент кода моего макета активность:

<?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:fitsSystemWindows="true"> 

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

     <android.support.design.widget.CollapsingToolbarLayout 
      android:id="@+id/collapsingToolbar" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:fitsSystemWindows="true" 
      app:contentScrim="?attr/colorPrimary" 
      app:layout_scrollFlags="scroll|exitUntilCollapsed"> 

      <ImageView 
       android:id="@+id/imageCalculationDetail" 
       android:layout_width="match_parent" 
       android:layout_height="200dp" 
       android:background="@drawable/ic_dummy_calculation" 
       android:fitsSystemWindows="true" 
       android:scaleType="centerCrop" 
       app:layout_collapseMode="parallax"/> 

      <android.support.v7.widget.Toolbar 
       android:id="@+id/toolbar" 
       android:layout_width="match_parent" 
       android:layout_height="?attr/actionBarSize" 
       android:background="@color/transparent" 
       app:layout_collapseMode="pin" 
       app:popupTheme="@style/ThemeOverlay.AppCompat.Light"/> 

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

    <android.support.v4.widget.NestedScrollView 
     android:id="@+id/scroll" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_gravity="fill_vertical" 
     android:clipToPadding="false" 
     app:layout_behavior="@string/appbar_scrolling_view_behavior"> 

     <include layout="@layout/container"/> 

    </android.support.v4.widget.NestedScrollView> 

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

Мои стили (только v21), где BaseAppTheme родитель Theme.AppCompat.Light.NoActionBar:

<style name="AppTheme" parent="BaseAppTheme"> 
     <item name="android:windowTranslucentStatus">true</item> 
     <item name="android:windowDrawsSystemBarBackgrounds">true</item> 
     <item name="colorPrimary">@color/colorPrimary</item> 
     <item name="android:colorPrimaryDark">@color/colorPrimaryDark</item> 
     <item name="android:colorAccent">@color/colorPrimary</item> 
     <item name="android:colorButtonNormal">@color/button_state_list</item> 
     <item name="android:statusBarColor">@color/transparent</item> 
    </style> 
+0

Публикуйте свой файл styles.xml. –

+0

Я добавил стиль под вопрос –

+0

Как насчет вашего файла манифеста? Вы указали правильный стиль? Отправьте это тоже. Потому что я пробовал такой же макет и все в порядке на эмуляторе Lollipop. –

ответ

-1

Применить точку останова, чтобы включить marginTop на панель инструментов для леденцов или выше.

значения/dimens.xml

<dimen name="toolbar_margin_top">0dp</dimen> 

значения-v21/dimens.xml

<dimen name="toolbar_margin_top">24dp</dimen> 

затем в макете:

<android.support.v7.widget.Toolbar 
    ..... 
    android:layout_marginTop="@dimen/toolbar_margin_top" 
+0

Это похоже на обходное решение, я хотел бы как-то найти какое-то чистое решение, в [пример] нет верхнего поля (http://antonioleiva.com/ collapsing-toolbar-layout /) –

+0

Если вы хотите иметь прозрачную строку состояния, это единственный способ ее исправить. Кроме того, вам необходимо отключить свойство android: windowDrawsSystemBarBackgrounds в ваших стилях: false

0
<item name="android:windowDrawsSystemBarBackgrounds">true</item> 

Поставив это в ваши стили вы говорите Android, что ваше приложение отвечает за r рисуя материал за системной панелью. Вот почему «грязный взлом» в другом ответе технически корректен, если этот флаг установлен.

Если у вас нет явной причины для того, чтобы флаг был истинным (я подозреваю, что нет), установите его в false, чтобы ОС должным образом смещала ваш контент для вас. Ваша строка состояния должна быть прозрачной.

+0

Нет значения этого значения для false не имеет значения –

0

Try удалением android:fitsSystemWindows="true" из ImageView ..

<ImageView 
      android:id="@+id/imageCalculationDetail" 
      android:layout_width="match_parent" 
      android:layout_height="200dp" 
      android:background="@drawable/ic_dummy_calculation" 
      android:scaleType="centerCrop" 
      app:layout_collapseMode="parallax"/> 
+0

После удаления этого флага панель инструментов находится в строке состояния , но statusbar перестает быть прозрачным, и вся сворачиваемая панель инструментов отключается, это нежелательный эффект –

+0

, пожалуйста, разместите снимок экрана? –

5

Ну я понять это, проблема заключалась в том, что у меня был

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

в моем toolbarStyle из BaseAppTheme (для других actvities, все работает хорошо , для свертывания панели инструментов с полупрозрачной статусной полосой нет). После установки

android:fitsSystemWindows="false" 

на мою панель инструментов, все работает нормально.

0

Для меня

Добавление атрибута fitSystemWindows = "ложных" на панели инструментов в XML работал.

<android.support.v7.widget.Toolbar 
       android:id="@+id/toolbar" 
       android:layout_width="match_parent" 
       android:layout_height="?attr/actionBarSize" 
       android:fitsSystemWindows="false" 
       app:popupTheme="@style/AppTheme.PopupOverlay" 
       app:layout_collapseMode="pin"/> 

 Смежные вопросы

  • Нет связанных вопросов^_^