Хорошо, вопрос может показаться запутанным. Позвольте мне объяснить ситуацию:Как позиционировать представление, основанное на позиции одного из дочерних элементов дочерней группы ViewGroup?
Приведи изображение на следующую ссылку, (-I не был в состоянии использовать Imgur, как он заблокирован в моей сети): http://www.flickr.com/photos/[email protected]/8494742266/
- У меня есть CustomView, расширяющий RelativeLayout (вся черная часть в изображении)
- Этого CustomView содержит компонент в верхнем ViewTopBar (обозначено красного цвет в изображении), который проходит ViewGroup & горизонтально прокручивать
- ViewTopBar содержит много дочерних представлений. Один из них - это индикатор IndicatorView (оранжевый на изображении), который позиционируется в ViewTopBar после выполнения некоторых вычислений & вызова макета (l, t, r, b) в методе OnLayout() ViewTopBar.
- Я хочу, чтобы вертикальная линия с 1 пикселем отображалась под индикатором. Он должен начинаться чуть ниже IndicatorView & покрывает всю высоту CustomView. (См. Зеленую линию на изображении).
- Эта часть не имеет значения, но только для информации, синяя часть изображения на изображении - это другая пользовательская группа ViewGroup, которую сложно описать. (Кроме того, еще есть еще несколько компонентов, которые являются частью CustomView, но не показаны на изображении, поскольку это не нужно для моего вопроса.)
Там, я надеюсь, что это объясняется. Теперь мне нужно, чтобы зеленая линия 1px перемещалась горизонтально, чтобы оставаться выровненной ниже IndicatorView всякий раз, когда выполняется горизонтальная прокрутка. В настоящее время я реализовал его следующим образом:
- Разместил линию 1px как дочерний элемент CustomView.
- Когда вызывается функция OnLayout() ViewTopBar, я обновляю LayoutParams от GreenLine. & просто измените левое поле в зависимости от положения IndicatorView.
Это работает отлично в течение большей части времени. Но иногда, когда я постоянно просматриваю прокрутку влево-вправо-влево, 1pxLine не синхронизируется с прокруткой IndicatorView (- Однако, когда прокрутка останавливается, она возвращается в синхронизацию!) Итак, какие изменения мне нужны сделать так, чтобы линия оставалась в синхронизации даже во время операций прокрутки?
Пожалуйста, дайте мне знать, если кто-то смог это сделать раньше.
Спасибо,
-Kiran
Ну, позиция IndicatorView рассчитывается из ViewTopBar. Все это должно было переместиться в CustomView для этого, что усложнит ситуацию в моем случае. Кроме того, таким образом реализации, проблема «догоняющего» будет наблюдаться с контейнером-макетом и дочерними элементами ViewTopBar (как в настоящее время для IndicatorView и 1px-Line). Спасибо за вклад, хотя .. Я могу в конечном итоге использовать это, если ничего больше не работает, и «уловная» задержка не слишком заметна для контейнера-макета! :) –