2016-07-23 88 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

相關問題