设置翻译后如何刷新布局Y.

时间:2015-12-06 11:19:56

标签: android

我创建了recyclelerview和header layout,当我向上滚动recyclelerview时,标题布局应该根据recyclerview的滚动偏移消失。

我的布局xml文件是:

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout
        xmlns:tools="http://schemas.android.com/tools"
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:showIn="@layout/activity_main"
        tools:context=".MainActivity"
        android:id="@+id/main_container">

    <TextView android:layout_width="match_parent"
              android:layout_height="50dp"
              android:id="@+id/header"
              android:text="Mao Minh Tri"/>

    <android.support.v7.widget.RecyclerView
            android:id="@+id/my_recycler_view"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_below="@+id/header"/>

</RelativeLayout>

以及滚动recyclelerview时实现的代码

RecyclerView.OnScrollListener scrollListener = new RecyclerView.OnScrollListener() {
        @Override
        public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
            if (originalHeight == 0) {
                originalHeight = myrecyclerView.getHeight();
            }

            ViewGroup.LayoutParams lp = myrecyclerView.getLayoutParams();

            calculateLocationAndProductStickerOffset();
            textview.setTranslationY(-offset);
            mainView.setTranslationY(-offset);

            if ((offset < textview.getHeight() && dy > 0) || (offset > 0 && dy < 0)) {
                offset += dy;
            }


            System.out.println("original height --> " + originalHeight);
        }

        @Override
        public void onScrollStateChanged(RecyclerView recyclerView, int newState) {

        }
    };

    myrecyclerView.addOnScrollListener(scrollListener);
}

private void calculateLocationAndProductStickerOffset() {
    if (offset > textview.getHeight()) {
        offset = textview.getHeight();
    } else if (offset < 0) {
        offset = 0;
    }
}

我的结果: before scrolling after scrolled

2 个答案:

答案 0 :(得分:0)

Here在不使用RecyclerView.OnScrollListener

的情况下使用带有recycleview的标头的最佳方式

答案 1 :(得分:-1)

我认为你不需要做所有这些......你只需要将你的父布局从RelativeLayout改为CoordinatorLayout,它支持默认情况下这样做。

这是一个很好的教程:

https://guides.codepath.com/android/Handling-Scrolls-with-CoordinatorLayout