1

わかりました、質問は混乱を招くように聞こえるかもしれません。シナリオを説明しましょう:

次のリンクの画像を参照してください (-ネットワークでブロックされているため、imgur を使用できませんでした): http://www.flickr.com/photos/93397745@N05/8494742266/

  • RelativeLayout を拡張する CustomView があります (画像の黒い部分全体)
  • この CustomView には、上部の ViewTopBar (画像では赤で示されている) にコンポーネントが含まれており、これは ViewGroup を拡張し、水平方向にスクロール可能です。
  • ViewTopBar には、多くの子ビューが含まれています。そのうちの 1 つは IndicatorView (画像のオレンジ色のもの) で、ViewTopBar の onLayout() メソッドでいくつかの計算を行い、layout(l,t,r,b) を呼び出した後に ViewTopBar に配置されます。
  • IndicatorView の下に 1 ピクセルの垂直線を表示したい。IndicatorView のすぐ下から開始し、CustomView の高さ全体をカバーする必要があります。(画像の緑色の線を参照してください)。
  • この部分は問題ではありませんが、参考までに、画像の青色の部分は別の Custom ViewGroup であり、説明が非常に複雑です。(また、CustomView の一部であるが、私の質問には必要ないため、画像には表示されていないコンポーネントがまだいくつかあります。)

そこで、見解を説明していただければ幸いです。ここで必要なのは、水平スクロールが行われるたびに IndicatorView の下に配置されるように、緑色の 1px ラインを水平に移動することです。現在、次のように実装しています。

  • CustomView の子として 1px 行を配置しました。
  • ViewTopBar の onLayout() が呼び出されるたびに、GreenLine の LayoutParams を更新し、IndicatorView の位置に応じて左マージンを変更します。

ほとんどの場合、これで問題なく動作します。しかし、時々、左右左右のスクロールを連続して行うと、1pxLine がスクロールする IndicatorView と同期していないことがあります (--ただし、スクロールが停止すると、同期に戻ります!)スクロール操作中でも線が同期するようにするには?

誰かが以前にこれを行うことができた場合はお知らせください。

ありがとう、

-キラン

4

1 に答える 1

0

I'd take the IndicatorView out of ViewTopBar, and together with 1px-line-view I'd include it within some container layout, which I'd put inside CustomView instead. That way, you could control position of this element as a whole, instead of making one 'catching-up' with another. Not sure if it's applicable in your case though.

于 2013-02-21T08:34:02.060 に答える