将View设置为GONE时未调用Android onScrolled

时间:2019-02-05 13:02:02

标签: java android android-layout scroll

我试图在向上滚动时隐藏RelativeLayout,而在向下滚动时显示它。 onScroll可以正常工作,并且每次在View设置为GONE之前都被调用。

final RelativeLayout placeHeaderMain = findViewById(R.id.place_header_main);

mRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
    @Override
    public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
        super.onScrolled(recyclerView, dx, dy);
        if (dy > 0) {
            // Scrolling up
            placeHeaderMain.setVisibility(View.GONE);

        } else {
            // Scrolling down
           placeHeaderMain.setVisibility(View.VISIBLE);
        }
    }
});

我希望我的听众在将“视图”设置为“消失”后继续工作,以使其在向下滚动时可见。

谢谢。

2 个答案:

答案 0 :(得分:1)

是否有足够的项目要滚动?

如果dy == 0,则不会触发上述代码。可能没有足够的项目来滚动,它将返回dy 等于0,更多的是它不会调用onScroll(...)

dy隐藏后,您拥有什么RelativeLayout? 尝试在下面检查该方法:

@Override
public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
    super.onScrollStateChanged(recyclerView, newState);
}

答案 1 :(得分:0)

尝试将视图设置为不可见而不是消失
将任何视图设置为View.GONE时,他都是不可见的不会在版面配置中占用任何空间,但是当您像View.INVISIBLE那样将视图设置为View.GONE之前,但与PIL不同的是,您的视图仍会占用版面配置内部的空间。