12

Próbuję poznać CoordinatorLayout i jego funkcje. Użyłem go w połączeniu z AppBarLayout. Mój xml wygląda następująco:Pasek narzędzi przewijany pod paskiem stanu

<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> 

Problem jestem stoi to, że pasek narzędzi na przewijanie idzie pod paskiem stanu. Chcę, aby pasek narzędzi przewijał się podczas przewijania widoku Recyklera, ale nie chcę, aby był pod paskiem stanu. Jak temu zapobiec?

Ponadto, gdy próbuję zamknąć element CoordinatorLayout w innym układzie, np. LinearLayout, kolor primaryDark zdefiniowany w kompozycji nie jest wyświetlany na pasku stanu. Pokazuje kolor primaryDark, gdy używam go powyżej xml. Czy jest lepszy sposób to zrobić?

Odpowiedz

11

Naprawiłem to, przechodząc do stylu, który kontroluje kolor paska stanu i zmieniłem go na kolor, który chciałem zamiast przezroczystego. Teraz wydaje się, że pasek stanu znajduje się na pasku narzędzi.

<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

miałem podobny problem. Mój został rozwiązany.

Dodano android:fitsSystemWindows="true" do theAppBarLayout. Dodano app:layout_scrollFlags="scroll|enterAlways|snap" dla paska narzędzi Poniżej znajduje się układ, który miałem.

<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

Przez pomyłkę dodawałem "android: fitsSystemWindows =" true "' do CoordinatorLayout. Problem został rozwiązany teraz przez usunięcie 'android: fitsSystemWindows =" true "' z CoordinatorLayout, który był widokiem głównym i dodanie go do AppbarLayout. –

0

można dodać widok korzeń tag CoordinatorLayout i fitsystemwindows = true ponownie.

Powiązane problemy