12

Sto cercando di imparare CoordinatorLayout e le sue funzionalità. L'ho usato in combinazione con AppBarLayout. Il mio xml è la seguente:Barra degli strumenti che scorre sotto la barra di stato

<android.support.design.widget.CoordinatorLayout 

android:id="@+id/content" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="vertical" 
xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto"> 

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

    <android.support.design.widget.AppBarLayout 
     android:id="@+id/appBarLayout" 
     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:background="?attr/colorPrimary" 
      app:popupTheme="@style/ThemeOverlay.AppCompat.Light" 
      app:layout_scrollFlags="scroll|enterAlways" /> 

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

    <android.support.design.widget.FloatingActionButton 
     android:id="@+id/fab" 
     android:layout_gravity="bottom|end" 
     style="@style/FabStyle"/> 

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

Il problema che sto affrontando è che la barra degli strumenti di scorrimento va sotto la barra di stato. Voglio che la barra degli strumenti scorra quando faccio scorrere la vista Recycler ma non voglio che vada sotto la barra di stato. Come posso evitare che ciò accada.

Inoltre, quando provo a incapsulare il CoordinatorLayout all'interno di un altro layout, ad es. LinearLayout, il colore di PrimaryDark definito nel tema non viene visualizzato nella barra di stato. Mostra il colore PrimaryDark quando lo uso come sopra xml. C'è un modo migliore per farlo?

risposta

11

Ho risolto questo problema entrando nello stile che controlla il colore della barra di stato e lo ho modificato con il colore che volevo invece che trasparente. Ora sembra che la barra di stato si trovi in ​​cima alla barra degli strumenti.

<resources>> 
<style name="AppTheme.NoActionBar"> 
    <item name="windowActionBar">false</item> 
    <item name="windowNoTitle">true</item> 
    <item name="android:windowDrawsSystemBarBackgrounds">true</item> 
    <item name="android:statusBarColor">@android:color/transparent</item> 
</style> 

`

<resources>> 
<style name="AppTheme.NoActionBar"> 
    <item name="windowActionBar">false</item> 
    <item name="windowNoTitle">true</item> 
    <item name="android:windowDrawsSystemBarBackgrounds">true</item> 
    <item name="android:statusBarColor">@color/colorPrimaryDark</item> 
</style> 

7

ho avuto il problema simile. Il mio è stato risolto.

Aggiunto android:fitsSystemWindows="true" a AppBarLayout. Aggiunto app:layout_scrollFlags="scroll|enterAlways|snap" per Toolbar Di seguito è riportato il layout che avevo.

<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:layout_width="match_parent" 
android:layout_height="match_parent" 
tools:context=".HomeActivity"> 

<android.support.design.widget.AppBarLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:fitsSystemWindows="true" 
    android:theme="@style/AppTheme.AppBarOverlay"> 
     <android.support.v7.widget.Toolbar 
      android:id="@+id/toolbar" 
      android:layout_width="match_parent" 
      android:layout_height="?attr/actionBarSize" 
      android:background="?attr/colorPrimary" 
      app:layout_scrollFlags="scroll|enterAlways|snap" 
      app:popupTheme="@style/AppTheme.PopupOverlay" /> 

    <android.support.design.widget.TabLayout 
     android:id="@+id/id_tabs" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content"/> 

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

<android.support.v4.view.ViewPager 
    android:id="@+id/id_viewpager" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    app:layout_behavior="@string/appbar_scrolling_view_behavior" /> 

<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"/> 
+0

Stavo aggiungendo 'android: fitsSystemWindows =" true "' a CoordinatorLayout per errore. Il problema è ora risolto rimuovendo 'android: fitsSystemWindows =" true "' da CoordinatorLayout che era la radice View e aggiungendola ad AppbarLayout. –

0

è possibile aggiungere tag radice vista CoordinatorLayout e fitsystemwindows = true di nuovo.

Problemi correlati