如何在Recyclerview中获得项目视图的可见性?

时间:2016-07-23 09:19:35

标签: android android-recyclerview

我希望在百分比中获得Recyclerview项目的可见性,即视图在滚动时屏幕上可见的百分比。我想实现,如果视图是50%可见,我想隐藏一些其他可见的视图。

3 个答案:

答案 0 :(得分:1)

开始举例:

private int getPercantageOfVisibleRow(RecyclerView recyclerView) {
    LinearLayoutManager layoutManager = (LinearLayoutManager) recyclerView.getLayoutManager();
    int visibleRows = layoutManager.findLastVisibleItemPosition() - layoutManager.findFirstVisibleItemPosition();
    return (int) (((float) (visibleRows / layoutManager.getItemCount())) * 100);
}

答案 1 :(得分:0)

您可能正在寻找此库:

https://github.com/danylovolokh/VideoPlayerManager/tree/master/list-visibility-utils

此库为您提供回调,当MOST(按百分比)可见项获得焦点时调用该回调。您可以轻松修改示例以获得焦点可见性百分比。

但是只是为了警告你这个lib不稳定和成熟的enoguh,我在生产应用程序中使用它但是非常错误并且我试图用更稳定的东西替换它。

答案 2 :(得分:0)

你可以使用GravitySnapHelper: 如果您需要捕捉开始,顶部,结尾或底部的支持,请使用GravitySnapHelper。

将此添加到build.gradle:

implementation 'com.github.rubensousa:gravitysnaphelper:1.5'

否则,使用LinearSnapHelper(recyclerview-v7包的一部分)完成中心捕捉。

对齐中心:

SnapHelper snapHelper = new LinearSnapHelper();
snapHelper.attachToRecyclerView(recyclerView);

使用GravitySnapHelper开始捕捉:

startRecyclerView.setLayoutManager(new LinearLayoutManager(this,
                LinearLayoutManager.HORIZONTAL, false));
SnapHelper snapHelperStart = new GravitySnapHelper(Gravity.START);
snapHelperStart.attachToRecyclerView(startRecyclerView);

使用GravitySnapHelper捕捉顶部:

topRecyclerView.setLayoutManager(new LinearLayoutManager(this));
SnapHelper snapHelperTop = new GravitySnapHelper(Gravity.TOP);
snapHelperTop.attachToRecyclerView(topRecyclerView);

enter link description here