Вызов scrollTo в onScrollChanged в Android HorizontalScrollView

Мой макет приложения выглядит так:

Пожалуйста, нажмите, чтобы увидеть это изображение

моя область - синяя область, 4096 пикселей. красная рамка - экран телефона, который представляет собой HorizontalScrollView.

Мой макет выглядит так:

<HorizontalScrollView>
  <ChartContent>
  </ChartContent>
</HorizontalScrollView>

когда HorizontalScrollView (я буду называть его HSV для удобства) прокручивается до конца области содержимого. Я сделаю это прокруткой до начала области содержимого и перерисовать диаграмму в моей области содержимого. Это заставит пользователя чувствовать, что это как бесконечный скролл-просмотр.

Я следую за этим постом: Синхронизировать ScrollView позиции прокрутки - Android. Унаследуйте класс horizontalScrollView и переопределите метод onScrollChanged, чтобы я мог получить текущий x HSV.

Войти как это:

это означает, что красная рамка движется слева направо (oldx -> x)

onScrollChanged: 1006 -> 1180, speed = 174
onScrollChanged: 1006 -> 1180, speed = 174
onScrollChanged: 1180 -> 1254, speed = 74
onScrollChanged: 1180 -> 1254, speed = 74
onScrollChanged: 1254 -> 1325, speed = 71
onScrollChanged: 1254 -> 1325, speed = 71
onScrollChanged: 1325 -> 1366, speed = 41
onScrollChanged: 1325 -> 1366, speed = 41
onScrollChanged: 1366 -> 1406, speed = 40
onScrollChanged: 1366 -> 1406, speed = 40
onScrollChanged: 1406 -> 1449, speed = 43
onScrollChanged: 1406 -> 1449, speed = 43
onScrollChanged: 1449 -> 1499, speed = 50
onScrollChanged: 1449 -> 1499, speed = 50
onScrollChanged: 1499 -> 1518, speed = 19
onScrollChanged: 1499 -> 1518, speed = 19
onScrollChanged: 1518 -> 1544, speed = 26

но когда я вызываю scrollTo внутри onScrollChanged:

call HSV.scrollTo(60)

Журнал:

onScrollChanged: 3708 -> 60, speed = -3648 —> ok
onScrollChanged: 3579 -> 60, speed = -3519 —> ok
onScrollChanged: 60 -> 3738, speed = 3678 —> wrong
onScrollChanged: 3738 -> 60, speed = -3678 —> wrong
onScrollChanged: 60 -> 60, speed = 0 —> wrong

Строка 3 - 5 очень сбивает с толку, и HSV внезапно остановится в положении x = 60.

Что-то не так с моей реализацией? Или я могу использовать другое решение для достижения моей цели?

0 ответов

Другие вопросы по тегам