わかりました、質問は混乱を招くように聞こえるかもしれません。シナリオを説明しましょう:
次のリンクの画像を参照してください (-ネットワークでブロックされているため、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 と同期していないことがあります (--ただし、スクロールが停止すると、同期に戻ります!)スクロール操作中でも線が同期するようにするには?
誰かが以前にこれを行うことができた場合はお知らせください。
ありがとう、
-キラン