我创建了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;
}
}
答案 0 :(得分:0)
Here在不使用RecyclerView.OnScrollListener
答案 1 :(得分:-1)
我认为你不需要做所有这些......你只需要将你的父布局从RelativeLayout改为CoordinatorLayout,它支持默认情况下这样做。
这是一个很好的教程:
https://guides.codepath.com/android/Handling-Scrolls-with-CoordinatorLayout