如何根据兄弟ViewGroup的孩子的位置定位视图?

时间:2013-02-21 08:14:59

标签: android viewgroup scroller

好的,这个问题可能听起来令人困惑。让我解释一下这个场景:

请参阅以下链接中的图片,(我无法使用imgur,因为它在我的网络中被阻止): http://www.flickr.com/photos/93397745@N05/8494742266/

  • 我有一个CustomView,它扩展了RelativeLayout(图像中的整个黑色部分)
  • 此CustomView在ViewTopBar顶部包含一个组件(在图像中以红色表示),它扩展了ViewGroup&可水平滚动
  • ViewTopBar包含许多子视图。其中一个是一个IndicatorView(图像中的橙色),在进行一些计算后放置在ViewTopBar中。在ViewTopBar的onLayout()方法中调用布局(l,t,r,b)。
  • 我希望在IndicatorView下面显示一条垂直的1像素线。它应该在IndicatorView&覆盖CustomView的整个高度。 (见图中绿色的线条)。
  • 这部分无所谓,但仅仅是为了获取信息,图像中的蓝色部分是另一个自定义视图组,它描述起来非常复杂。 (此外,还有一些组件是CustomView的一部分,但未在图像中显示,因为我的问题不需要它。)

在那里,我希望我有解释的观点。现在我需要的是绿色1px线应该水平移动,以便在水平滚动完成时保持在IndicatorView下方对齐。我目前实现如下:

  • 将1px行放置为CustomView的子级。
  • 每当调用ViewTopBar的onLayout()时,我都会更新GreenLine的LayoutParams&只需根据IndicatorView的位置修改左边距。

大部分时间都可以正常使用。但有时,当我连续左右滚动时,1pxLine不会与滚动指示器视图保持同步( - 但是,一旦滚动停止,它就会恢复同步!)那么我需要做哪些更改使得即使在滚动操作期间线也保持同步?

如果有人能够这样做,请告诉我。

谢谢,

-Kiran

1 个答案:

答案 0 :(得分:0)

我从IndicatorView中取出ViewTopBar,并与1px-line-view一起将其包含在一些容器布局中,我将其放入CustomView代替。这样,你可以控制整个元素的位置,而不是让另一个元素“追赶”。不确定它是否适用于您的情况。