使用CoordinatorLayout

时间:2016-09-27 07:10:03

标签: android android-layout android-studio mobile android-coordinatorlayout

我已经设法弄清楚如何将底部工具栏添加到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的另一种方式时(在相反方向滚动时出现制作栏它意图触发)

1 个答案:

答案 0 :(得分: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