0

我已经设法弄清楚如何将底部工具栏添加到CoordinatorLayout,但似乎无法弄清楚如何隐藏底部RelativeLayout使用CoordinatorLayout时隐藏顶部和底部工具栏

如果我将@string/appbar_scrolling_view_behavior添加到底部RelativeLayout,当用户向上滚动时会出现底部条。预期的效果是当用户向上滚动时,顶部和底部的条形杆都会出现。任何想法我会如何处理这个?因为我的ViewPager包含来自其他库的复杂代码,所以需要跨所有选项卡的通用底栏(用于简单操作)。

浮动操作按钮不是最好的,因为它隐藏了一个按钮内部的操作集合,需要用户点击和展开。下面是我用于管理选项卡和寻呼机的xml布局:

<?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:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    xmlns:ads="http://schemas.android.com/tools"> 

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


    <android.support.design.widget.CollapsingToolbarLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     app:layout_scrollFlags="scroll|enterAlways"> 

     <android.support.design.widget.TabLayout 
      android:id="@+id/tab_layout" 
      android:layout_width="match_parent" 
      android:layout_height="?attr/actionBarSize" 
      android:background="#1378BB" 
      app:layout_scrollFlags="scroll|enterAlways"/> 


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

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

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



    <RelativeLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     app:layout_scrollFlags="scroll|enterAlwaysCollapsed" 
     app:layout_behavior="@string/appbar_scrolling_view_behavior" 
     > 

     <android.support.v7.widget.Toolbar 
      android:id="@+id/tabs" 
      android:background="#3202c4" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      app:layout_scrollFlags="scroll|enterAlwaysCollapsed" 
      android:layout_alignParentBottom="true" 
      android:layout_marginBottom="100dp" 
      /> 
    </RelativeLayout> 

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

任何想法或想法?我试图把工具栏里面CollapsingToolbarLayout和使用layout_alignParentBottom="true",但只有固定工具栏AppBarLayout,而不是整个CoordinatorLayout

只有我能得到@string/appbar_scrolling_view_behavior各地引发的其他方式的底部RelativeLayout(使巴出现滚动时在相反的方向它旨在触发)

回答

1

您需要将自定义CoordinatorLayout.Behavior添加到底部ToolbarToolbar必须是CoordinatorLayout的直接子女。

马克它:

app:layout_behavior="{name_of_the_class_of_behavior}" 
app:layout_scrollFlags="scroll|enterAlways" 

在自定义行为覆盖的方法:

@Override 
public boolean layoutDependsOn(CoordinatorLayout parent, View fab, View dependency) { 
    return dependency instanceof AppBarLayout; 
} 

,第二个是:

public boolean onDependentViewChanged(CoordinatorLayout parent, View fab, View dependency) 

,你控制目标的知名度视图。基本上,我们需要的是测量显示什么AppBarLayout一部分,其翻译并相应地设置你的观点:

CoordinatorLayout.LayoutParams lp = (CoordinatorLayout.LayoutParams) view.getLayoutParams(); 
int viewBottomMargin = lp.bottomMargin; 
int distanceToScroll = view.getHeight() + viewBottomMargin; 
float ratio = dependency.getY()/toolbarHeight; 
view.setTranslationY(-distanceToScroll * ratio); 

更多关于它here