首页 > 解决方案 > 如何在 Android 上将视图推送到活动之外?

问题描述

我有一个RelativeLayout包含 2 个视图, aLinearLayout和 a RecyclerView。这是我的.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顺利摆脱屏幕?

标签: androidandroid-layoutandroid-recyclerviewandroid-linearlayoutandroid-relativelayout

解决方案


有两种方法可以实现。

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

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

您可以找到上述示例。


推荐阅读