我已经设法弄清楚如何将底部工具栏添加到CoordinatorLayout
,但似乎无法弄清楚如何隐藏底部RelativeLayout
。
如果我将@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
的另一种方式时(在相反方向滚动时出现制作栏它意图触发)
答案 0 :(得分:1)
您需要将自定义CoordinatorLayout.Behavior
添加到底部Toolbar
。 Toolbar
必须是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