ActionBarActivity显示/隐藏工具栏无法正常工作

时间:2015-05-20 21:34:21

标签: android android-recyclerview android-toolbar

我目前正在开发一款应用,其中我需要使用该功能在向下滚动时隐藏工具栏(如Google+)。我正面临着滚动工具栏渲染的问题。以下是它现在的样子 -

Overlapping view on toolbar

我希望工具栏只是向下滚动隐藏,但此处视图部分覆盖工具栏,之后只有工具栏隐藏。

这是布局代码 -

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="org.step.main.MainActivity">

    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbarone"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        android:background="?attr/colorPrimary"/>

    <android.support.v7.widget.RecyclerView
        android:id="@+id/list"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:paddingTop="?attr/actionBarSize"
        android:clipToPadding="false"
        tools:context=".MainActivity"
        />
</FrameLayout>

这是Activity代码 -

    mRecyclerView = (RecyclerView) findViewById(R.id.list);
        mRecyclerView.setLayoutManager(new LinearLayoutManager(this));
        mRecyclerView.setItemAnimator(new DefaultItemAnimator());
        mRecyclerView.setOnScrollListener(new HidingScrollListener() {
            @Override
            public void onHide() {
                hideViews();
            }

            @Override
            public void onShow() {
                showViews();
            }
    });

    private void hideViews() {
        mToolbar.animate().translationY(-mToolbar.getHeight()).setInterpolator(new AccelerateInterpolator(2));
    }

    private void showViews() {
        mToolbar.animate().translationY(0).setInterpolator(new DecelerateInterpolator(2));
    }

有人可以解释为什么会这样吗?

1 个答案:

答案 0 :(得分:0)

我在FrameLayout doc -

上阅读这一行后得到了它
"Child views are drawn in a stack, with the most recently added child on top."

所以,我改变了ToolbarRecyclerView的位置并且它有效。这里,ToolbarRecyclerView之后呈现,因此它在堆栈中更高。

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="org.step.main.MainActivity">

    <android.support.v7.widget.RecyclerView
        android:id="@+id/list"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:paddingTop="?attr/actionBarSize"
        android:clipToPadding="false"
        tools:context=".MainActivity"
        />

    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbarone"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        android:background="?attr/colorPrimary"/>

</FrameLayout>