如何在Android上的活动之外推送视图?

时间:2018-05-22 18:17:03

标签: android android-layout android-recyclerview android-linearlayout android-relativelayout

我有RelativeLayout,其中包含2个视图,LinearLayoutRecyclerView。这就是我的.XML文件的样子:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/linear_layout"
        android:orientation="horizontal">

        //A few image views
    </LinearLayout>

    <android.support.v7.widget.RecyclerView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/recycler_view"
        android:layout_below="@+id/linear_layout"/>
</RelativeLayout>

我想要实现的目标是在滚动LinearLayout时从我的活动中取出RecyclerView,并且我正在使用以下代码:

RecyclerView.OnScrollListener onScrollListener = new RecyclerView.OnScrollListener() {
    private int scrollDistance = 0;
    private boolean isVisible = true;
    private static final float MINIMUM = 50;

    @Override
    public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
        super.onScrolled(recyclerView, dx, dy);

        if (isVisible && scrollDistance > MINIMUM) {
            linearLayout.animate().translationY(-linearLayout.getHeight() - 12); //Hide
            scrollDistance = 0;
            isVisible = false;
        } else if (!isVisible && scrollDistance < -MINIMUM) {
            linearLayout.animate().translationY(0); //Show
            scrollDistance = 0;
            isVisible = true;
        }

        if ((isVisible && dy > 0) || (!isVisible && dy < 0)) {
            scrollDistance += dy;
        }
    }
};
recyclerView.addOnScrollListener(onScrollListener);

但我实现了只获得LinearLayout的内容。我还尝试添加一个侦听器,以便在动画停止时将linearLayout对象的可见性设置为GONE,但RecyclerView将落入LinearLayout个地方。

如何将LinearLayout平稳地移出屏幕?

1 个答案:

答案 0 :(得分:1)

有两种方法可以实现。

  1. 将Linearlayout推入CollapsabletoolbarLayout https://www.journaldev.com/13927/android-collapsingtoolbarlayout-example

  2. 在RecyclerAdapter中使用viewtype属性,并将LinearLayout转换为Recycler视图的HEADER。 https://inducesmile.com/android/add-header-to-android-recyclerview/

  3. 您可以找到上述样本。