15

Ho aggiornato il mio studio Android qualche giorno fa e ho iniziato a lavorare con CoordinatorLayout e CollapsingToolbarLayout solo per provare cose.CollapsingToolBarLayout - cambio di colore della barra di stato cambio di stato

Sembra che il colore tela Toolbar ignorare il colore iniziale barra di stato e il colore della barra di stato tela (provato sia da XML e codice)

stato iniziale:

initial state:


ha iniziato a scorrere:

started scrolling


scorso fino a quando collasso:

scrolled until collapsing


Quindi le domande sono:

1.How posso impedire che la barra degli strumenti di ignorare la barra di stato quando collasso (nemmeno lasciare l'immagine che sto crollando per andare sopra di esso).

2.How posso cambiare lo stato barra di colore dopo essere collassato

Un altro problema che ho avuto è che ho dato il colore iniziale della barra degli strumenti e non solo tela di colore perché volevo barra degli strumenti sopra l'immagine, ma invece andrà avanti parte superiore dell'immagine e coprirà alcuni di essi, nonché coprirà tutto ciò che sta per crollare dietro di esso


aggiunti colore/stile alla barra degli strumenti in xml:

added colour/style to the toolbar in the xml


3. C'è un modo per posizionare la barra degli strumenti sopra l'immagine dall'inizio e semplicemente comprimere l'immagine? (Pensato forse a mantenere la barra degli strumenti appuntato e e il layout frame prima l'immagine, ma la sua ancora andando crollo sulla zona barra di stato, che è la questione principale.)


attività principale 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"); 

risposta

4

Prova ad aggiungere android:fitsSystemWindows="true" a AppBarLayout. Ha funzionato per me.

0

Per il punto # 3: nella barra degli strumenti aggiungere uno sfondo trasparente

android: background = "@ Android: colore/trasparente"

<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

non lo sapevo mai..grazie mille !! – Sjd

0

per 2) non c'è a known issue

per ora sto impostando il colore dello sfondo della barra degli strumenti a livello di programmazione

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)); 
     } 

    }); 

questa è ovviamente una semplice implementazione. Puoi ottimizzarlo

+0

Non c'è 'AppBarStateChangeListener', quindi probabilmente OP deve fare qualcosa di simile: http://stackoverflow.com/questions/31682310/android-collapsingtoolbarlayout-collapse-listener – dumbfingers