2015-12-29 2 views
3

Я создаю панель инструментов с фрагментом карты как часть этого. Панель инструментов фиксирована и непрозрачна.Координатор Содержимое макета отображается за строкой состояния

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

Это результирующее вопрос: MapFragment overlaps statusbar "background"

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

Есть ли способ не рисовать содержимое, когда оно выходит за панель инструментов? Или способ сделать фон строки состояния для рисования перед содержимым AppBarLayout?

Я попытался сделать вид перед AppBarLayout (прямо под панелью состояния), но после того, как MapFragment прокручивается до конца, он затем отображается перед этим видом, делая отображение MapFragment видимым во время маленький мгновенный.

<?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" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/main_content" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:clickable="true" 
    android:fitsSystemWindows="true"> 

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

    <android.support.design.widget.CollapsingToolbarLayout 
     android:id="@+id/collapsing_toolbar" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:background="@color/orange" 
     android:fitsSystemWindows="true" 
     app:layout_scrollFlags="scroll|exitUntilCollapsed"> 

     <RelativeLayout 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:layout_marginTop="?attr/actionBarSize"> 

      <fragment 
       android:id="@+id/map" 
       android:name="com.google.android.gms.maps.SupportMapFragment" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       app:layout_collapseMode="none" 
       tools:context=".restaurants.stores.StoresFragment" /> 

      <ImageView 
       android:id="@+id/minimizeBtn" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_margin="@dimen/stores_details_minimize_margin" 
       android:clickable="true" 
       android:contentDescription="@null" 
       android:paddingTop="@dimen/status_bar_height" 
       android:src="@drawable/selector_map_minimize_btn" 
       android:visibility="gone" /> 

      <include 
       android:id="@+id/cardDetailsLayout" 
       layout="@layout/store_card_small_detail" 
       android:layout_width="match_parent" 
       android:layout_height="@dimen/stores_details_card_height" 
       android:layout_alignParentBottom="true" 
       android:layout_margin="10dp" 
       android:visibility="gone" /> 
     </RelativeLayout> 

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

      <com.app.views.FontTextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:ellipsize="end" 
       android:singleLine="true" 
       android:text="@string/store_toolbar_text" 
       android:textColor="@color/white" 
       android:textSize="@dimen/toolbar_text_size" 
       app:font="@string/fontFlamaMedium" /> 
     </android.support.v7.widget.Toolbar> 
    </android.support.design.widget.CollapsingToolbarLayout> 
    </android.support.design.widget.AppBarLayout> 

    <android.support.v7.widget.RecyclerView 
     android:id="@+id/list" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     app:layout_behavior="@string/appbar_scrolling_view_behavior" /> 
</android.support.design.widget.CoordinatorLayout> 

Edit: В макете XML-андроида: layout_behavior атрибут, связанный с моим RecyclerView, но содержание панели инструментов имеет правильное поведение, проблема заключается в том, что она видна под статусной, что я не хочу это к.

+0

Является ли ваша деятельность настройки темы 'андроида: statusBarColor' прозрачным? – cziemba

+0

Возможный дубликат [Content behind CoordinatorLayout AppBarLayout] (http://stackoverflow.com/questions/32855889/content-behind-coordinatorlayout-appbarlayout) –

+0

@cziemba: Да, я пробовал как прозрачные, так и непрозрачные, но результат все тот же – jsc

ответ

0

Удалить этот атрибут из панели инструментов

android:background="?attr/colorPrimary" 

И добавить этот атрибут CollapsingToolbar

app:contentScrim="?attr/colorPrimary" 

contentScrim будет контролировать цвет панели и убедитесь, что цвет появляется только тогда, когда фоновое изображение исчезло out

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