2013-02-21 63 views
1

好的,这个问题可能听起来很混乱。让我解释一下情景: http://www.flickr.com/photos/[email protected]/8494742266/如何根据兄弟ViewGroup的一个孩子的位置来定位视图?

  • 我有延伸的CustomView:

    在以下链接参考图像,(-I因为它挡住了我的网络中是不能够使用imgur) RelativeLayout的(在图像整个黑色部分)

  • 这CustomView含有顶部ViewTopBar组分(在图像中的红色表示),其延伸的ViewGroup &是水平滚动
  • 的ViewTopBar包含许多子视图。其中一个是一个IndicatorView(图像中的橙色),它在ViewTopBar的onLayout()方法中调用布局(l,t,r,b)后进行一些计算&,并放置在ViewTopBar中。
  • 我想要一个垂直1像素线显示在IndicatorView下方。它应该从IndicatorView &下面开始,覆盖CustomView的整个高度。 (看图中绿色的线)。
  • 这部分并不重要,但仅供参考,图像中的蓝色部分是另一个Custom ViewGroup,它非常复杂以供描述。 (另外,还有一些组件是CustomView的一部分,但没有在图像中显示,因为它不需要我的问题。)

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

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

这在大多数情况下都能正常工作。但有时候,当我左右左右滚动连续滚动时,1pxLine不会与滚动的IndicatorView保持同步(但是,一旦滚动停止,它会重新同步!)所以我需要做什么更改使滚动操作期间该行保持同步?

请让我知道,如果有人能够做到这一点以前。

谢谢,

-Kiran

回答

0

我走IndicatorViewViewTopBar,并用1px的线视图一起我包括它的一些容器的布局,我把内部内代替CustomView。这样,你就可以控制整个元素的位置,而不是与另一个“追赶”。不知道它是否适用于你的情况。

+0

那么,IndicatorView的位置是从ViewTopBar中计算出来的。所有这些将不得不移动到CustomView,这会使我的情况变得复杂。另外,在这种实现方式中,ViewTopBar的容器布局和子元素(比如目前的IndicatorView和1px-Line)会出现“追赶”问题。感谢输入尽管..如果没有其他工作,并且'追赶'延迟对于容器布局来说不太明显,我可能会最终使用它! :) – 2013-02-21 08:55:45

相关问题