2016-07-23 122 views
2

我想获得百分比Recyclerview项目的可见度,即查看的是滚动时屏幕上可见的百分比。我想实现,如果视图是50%可见我想隐藏其他可见的其他视图。如何获得Recyclerview中项目视图的可见性?

+0

可能duplica te [隐藏在RecyclerView视图](http://stackoverflow.com/questions/27574805/hiding-views-in-recyclerview) – SaravInfern

+0

你在这里称'View'?在RecyclerView或RecyclerView本身行吗? – Divers

+0

@SaravInfern我想要以百分比..整数值获得知名度 –

回答

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。 –

0

你可能正在为这个图书馆:

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

这个库给你回调时MOST(按百分比)可见项获得被称为焦点。您可以轻松修改示例以获得项目焦点可见性百分比。

但是,只是为了警告你这个库不是稳定和成熟的enoguh,我在生产应用程序中使用它,但是很麻烦,我试图用更稳定的东西来替换它。

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

相关问题