Страницы

Поиск по вопросам

понедельник, 3 декабря 2018 г.

Размещение нескольких элементов в видимой области ViewPager

Есть данный макет. Область на которой находятся Card'ы. При свайпе справа-налево должны отображться следующие 2 элемента. Я делаю это с помощью ViewPager, но проблема в том, что ViewPager размещает по одному элементу в видимую область. Как решить эту проблему?


Ответ

Не претендую на завершенное решение, но кажется должна сработать такая идея.
Все карды кладутся в горизонтальный LinearLayout, который оборачивается в HorizontalScrollView



Это даст нам возможность скроллить карды по горизонтали.
Теперь нужно изменить ширину кардов так, чтобы на экран помещалось два карда. Для этого можно, например, унаследоваться от Card и переопределить onMeasure
public class MyCard extends Card { // …
@Override protected void onMeasure(int widthMeasureSpec, final int heightMeasureSpec) {
final View parentScrollView = ((View)(getParent().getParent()));
if (parentScrollView != null) { if (parentScrollView instanceof HorizontalScrollView) { widthMeasureSpec = parentScrollView.getMeasuredWidth() / 2; } } setMeasuredDimension(widthMeasureSpec, heightMeasureSpec); } }
Останется по событию скролла вычислить ближайшую позицию скролла, в которой на экране будут отображаться два карда целиком и вручную доскроллить через HorizontalScrollView.fullScroll(…)

Комментариев нет:

Отправить комментарий