15

Я обновил мою андроидскую студию несколько дней назад и начал работать с CoordinatorLayout и CollapsingToolbarLayout, просто попробовав материал.CollapsingToolBarLayout - status bar scrim color dosent change

кажется, что панель инструментов полотняного цвета переопределения в строке состояния первоначального цвета и цвета строка состояния полотняного (пробовал как с XML и кода)

начального состояние:

initial state:


начальная прокрутка:

started scrolling


не прокручивается до разрушения:

scrolled until collapsing


Так вопросы:

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

2.How можно изменить статус бар цвет после того, как рушится

Другой вопрос, который я имел, что я дал панель инструментов первоначальный цвет и не просто цвет, потому что холст я хотел панель инструментов над изображением, но вместо этого он будет продолжаться верхняя часть картины будет охватывать некоторые из них, а также будет охватывать все, что собирается свернуть за ней


добавил цвет/стиль на панели инструментов в XML:

added colour/style to the toolbar in the xml


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


Основной деятельность XML:

<android.support.design.widget.AppBarLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:theme="@style/AppTheme.AppBarOverlay"> 

    <android.support.design.widget.CollapsingToolbarLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     app:layout_scrollFlags="scroll|exitUntilCollapsed" 
     app:contentScrim = "?attr/colorPrimary" 
     app:statusBarScrim="?attr/colorAccent" --------> not changing 
     android:id="@+id/my_ctl"> 


     <ImageView 
      android:id="@+id/image" 
      android:src="@drawable/flights" 
      android:layout_width="match_parent" 
      android:layout_height="250dp" 
      android:scaleType="centerCrop" 
      android:fitsSystemWindows="true" 
      app:layout_collapseMode="parallax" 
      /> 

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


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

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


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

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

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

<android.support.design.widget.FloatingActionButton 
    android:id="@+id/fab" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_gravity="bottom|end" 
    android:layout_margin="@dimen/fab_margin" 
    android:src="@android:drawable/ic_dialog_email" /> 

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

MainActivity.java:

CollapsingToolbarLayout ctl = (CollapsingToolbarLayout) findViewById(R.id.my_ctl); 
    //ctl.setContentScrimColor(Color.RED); 
    ctl.setStatusBarScrimColor(Color.BLUE); --------> not working 
    ctl.setTitle("blabla"); 

ответ

4

Попробуйте добавить android:fitsSystemWindows="true" - AppBarLayout. Это сработало для меня.

0

Для точки # 3: В панели инструментов добавьте прозрачный фон

андроид: фон = "@ андроида: цвет/прозрачный"

<android.support.v7.widget.Toolbar 
      android:id="@+id/toolbar" 
      android:layout_width="match_parent" 
      android:layout_height="?attr/actionBarSize" 
      app:popupTheme="@style/AppTheme.PopupOverlay" 
      app:layout_collapseMode="pin" 
      android:background="@android:color/transparent" /> 
19
app:statusBarScrim="@android:color/transparent" 
+0

никогда не знал об этом .. спасибо вам! – Sjd

0

для 2) есть a known issue

на данный момент я устанавливаю цвет фона панели инструментов программно

mAppBarLayout.addOnOffsetChangedListener(new AppBarStateChangeListener() { 
     @Override 
     public void onStateChanged(AppBarLayout appBarLayout, State state) { 
      Toolbar toolbar = (Toolbar) mAppBarLayout.findViewById(R.id.toolbar_top); 
      int toolbarBackground = (state == AppBarStateChangeListener.State.COLLAPSED) ? R.color.color_collapsed : R.color.color_non_collapsed; 
      toolbar.setBackgroundColor(ContextCompat.getColor(DealsOptionsActivity.this, toolbarBackground)); 
     } 

    }); 

это, конечно, простая реализация. Вы можете его оптимизировать.

+0

Существует не 'AppBarStateChangeListener', поэтому, вероятно, OP должен сделать что-то вроде этого: http://stackoverflow.com/questions/31682310/android-collapsingtoolbarlayout-collapse-listener – dumbfingers