检查项目是否在RecyclerView中完全可见



我试图检查是否在RecyclerView中可见一些特定项目;但我无法实现它。请帮我确定我的项目在RecyclerView中是否完全可见。

mrecylerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
    @Override
    public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
        super.onScrolled(recyclerView, dx, dy);
        LinearLayout ll = (LinearLayout) recyclerView.findChildViewUnder(dx, dy);
        if (ll != null) {
            TextureVideoView tvv = (TextureVideoView) ll.findViewById(R.id.cropTextureView);
        }
    }
});

我想检查tvv视图是否在mrecyclerView视图中完全可见

您可以使用LayoutManager api进行一些逻辑,以获得RecyclerView onScrolled方法中最后一个完全可见的项目位置:

芬兰湾的科特林h5> Java h5> 自文档:

返回最后一个完全可见视图的适配器位置。这位置不包括之后分派的适配器更改最后一次布局通过。

尝试使用它并通知RecyclerView适配器刷新。

注意:我不知道为什么你在onScrolled方法中使用findViewById,这项工作应该在RecyclerView ViewHolder中实现,以提高性能

您必须为RecyclerView设置LayoutManager。如果你正在使用最常见的LinearLayoutManager,那么它有一些方法为您的目的:

  • findFirstCompletelyVisibleItemPosition ()
  • findFirstVisibleItemPosition ()
  • findLastCompletelyVisibleItemPosition ()
  • findLastVisibleItemPosition ()

在StaggeredGridLayoutManager中也有类似的方法,例如findFirstVisibleItemPositions

一般的方法是使用裸LayoutManager和它的isViewPartiallyVisible方法,但这可能需要更多的代码为特定的用例

相关内容

  • 没有找到相关文章

最新更新