2016-07-23 3 views
2

Я хочу получить видимость элемента Recyclerview в процентах. I.e вид - это много процентов, видимое на экране во время прокрутки. Я хочу реализовать это, если вид на 50% видимый, я хочу скрыть другой вид, видимый другим.Как получить видимость представления элемента в Recyclerview?

+0

Возможные duplica te of [Скрытие просмотров в 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 (в процентах), видимый элемент получает фокус. Вы можете легко изменить пример, чтобы получить элемент в процентах видимости фокуса.

Но только для того, чтобы предупредить вас, что этот lib не является стабильным и зрелым 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); 

Snapping топ с GravitySnapHelper:

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

enter link description here

Смежные вопросы