3

ImageView がドラッグされると、ImageView と ListView の両方が垂直に移動してそこにとどまるようにします。以下は私のコードです。最初はうまくいくように見えましたが、リストビューを上下にスクロールすると、リストビューが元の場所に戻ります。誰かがこの問題を解決する方法を教えてもらえますか?

class MyOnGestureListener implements OnGestureListener{

  public boolean onScroll(MotionEvent e1, MotionEvent e2,
                float distanceX, float distanceY) {

  mImageView.scrollBy(0, (int)distanceY);
  mListView.offsetTopAndBottom((int)-distanceY);
  mListView.invalidate();
  }
4

1 に答える 1

5

onLayoutをオーバーライドして、そこに永続化する必要があります。ベースのViewGroup(ListView)は、そこでの位置を再計算し、オフセットを上書きします。つまり、あなたの場合、ListViewを拡張してオーバーライドする必要があります。

@Override
protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
    final int offset = getMenuState() != MenuState.Closed ? getContentView().getLeft() : 0;

    super.onLayout(changed, left, top, right, bottom);

    /*
     * Lazily offset the view - rather than comparing the child views to find the
     * content view
     */
    getContentView().offsetLeftAndRight(offset);
}
于 2012-10-17T22:06:26.360 に答える