Есть данный макет. Область на которой находятся 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(…)
Комментариев нет:
Отправить комментарий