2016-11-15 46 views
1

我有一个自定义工具栏和非选项卡式ViewPager的活动。我的目标是允许工具栏滚动/隐藏,当我在viewPager中水平滚动片段时,我在工具栏中添加了app:layout_scrollFlags="scroll|enterAlways" 。但是,这只会隐藏工具栏,当我平移工具栏,而不是滚动viewPager时。所以我想也许工具栏没有从ViewPager中选择滚动事件,所以我将viewPager包装在NestedScrollView中。这工作,但它现在不允许我滚动viewPager的整个长度。任何指针任何人?如何允许滚动工具栏与包含水平scrollView的非标签viewPager?

注:我viewPager片段观点都包含一个滚动视图,允许水平滚动

<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:fitsSystemWindows="true"> 
 
    
 
<android.support.design.widget.AppBarLayout 
 
     android:id="@+id/app_bar_layout" 
 
     android:layout_width="match_parent" 
 
     android:layout_height="wrap_content" 
 
     android:theme="@style/AppTheme.AppBarOverlay"> 
 

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

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

回答

0

你给你的看法的细节少量。但我会试一试。

首先,一切应该在CoordinatorLayout之内。它应该有参数android:fitsSystemWindows="false"AppBarLayout也应该有android:fitsSystemWindows="false"Toolbar应该有app:layout_scrollFlags="scroll|enterAlways"来隐藏和显示。滚动视图应该有app:layout_behavior="@string/appbar_scrolling_view_behavior"参数。

它应该是这样的:

<android.support.design.widget.CoordinatorLayout 
    android:fitsSystemWindows="false"> 

    <android.support.design.widget.AppBarLayout 
     android:fitsSystemWindows="false" 
     android:theme="@style/AppTheme.AppBarOverlay"> 

     <android.support.v7.widget.Toolbar 
      app:layout_scrollFlags="scroll|enterAlways"/> 

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

    <android.support.v4.view.ViewPager 
     app:layout_behavior="@string/appbar_scrolling_view_behavior"/> 

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

这几乎和我刚刚修改的'android:fitsSystemWindows =“false”'一样,但工具栏仍然没有隐藏在这个配置中。 (只隐藏当我滑动工具栏而不是视图寻呼机) –

+0

“我的目标是允许工具栏滚动/隐藏,当我在viewPager水平滚动片段” - 这是行不通的。我的解决方案将在垂直滚动“ViewPager”的内容时工作。你必须实现你自己的'CoordinatorLayout.Behavior'并将其分配给'Toolbar'。 –

0

我想这会帮助你:

<?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" 
    android:id="@+id/viewApp" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical"> 

    <android.support.design.widget.AppBarLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"> 

     <android.support.design.widget.CollapsingToolbarLayout 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      app:layout_scrollFlags="scroll" 
      android:background="@drawable/sunshine22" 
      app:titleEnabled="false"> 

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

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

     <android.support.design.widget.TabLayout 
      android:id="@+id/tabs" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      app:tabMode="fixed" 
      app:tabGravity="fill" 
      app:tabIndicatorColor="#fff"/> 

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

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

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

的属性是不言自明的。有关详细信息,请参阅R.Zagorski的答案。

+0

对不起我没有在我的视图中实现CollapsingToolbarLayout(也不是tablayout) –