ScrollView в ViewFlipper не работает, хотя с помощью onTouchEvent - PullRequest
0 голосов
/ 08 августа 2011

В этом посте: Android: ScrollView в флиппере

Было предложено установить onTouchnListener для ScrollView, который является частью дочернего элемента ViewFlipper.

Я сделал это и также использовал ту же логику:

    public class MainActivity extends Activity implements OnGestureListener {

// ...

@Override
protected void onCreate(Bundle savedInstanceState) {
    // ...

    this.gestureDetector = new GestureDetector(this);

    // ..

           createViews();
}


private void createViews() {

    LayoutInflater inflater = (LayoutInflater) context
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);

            displayView = inflater.inflate(R.layout.viewflippercontent, null);

    ScrollView scrollView = (ScrollView) displayView
            .findViewById(R.id.scrollview);

    scrollView.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
             if (gestureDetector.onTouchEvent(event)) {
                Log.d("ScrollViewOnTouchListener", "true");                 
                return true;
            } else {
                Log.d("ScrollViewOnTouchListener", "false");
                return false;                       
            }
        }
    });

    // ..
}


@Override
public boolean onTouchEvent(MotionEvent me) {
    Log.d("onTouchEvent", "onTouchEvent");
    return gestureDetector.onTouchEvent(me);
}

public boolean onDown(MotionEvent e) {
    return true;
}

public void onLongPress(MotionEvent e) {
}

public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,
        float distanceY) {
    Log.d("onScroll", "onScroll");
    return false;
}

public void onShowPress(MotionEvent e) {
}

public boolean onSingleTapUp(MotionEvent e) {
    return true;
}

}

Когда я прокручиваю дочерний элемент ViewFlipper, я получаю в LogCat следующее:


08-07 21: 57: 14.581: DEBUG / ScrollViewOnTouchListener (4586): true

08-07 21: 57: 14.591: DEBUG / ScrollViewOnTouchListener (4586): false

08-07 21: 57: 14.622: DEBUG / ScrollViewOnTouchListener (4586): false

08-07 21: 57: 14.646: DEBUG / onScroll (4586): onScroll

08-07 21:57: 14.646: DEBUG / ScrollViewOnTouchListener (4586): false

08-07 21: 57: 14.671: DEBUG / onScroll (4586): onScroll

08-07 21: 57: 14.671: DEBUG/ ScrollViewOnTouchListener (4586): false

08-07 21: 57: 14.704: DEBUG / onScroll (4586): onScroll

08-07 21: 57: 14.704: DEBUG / ScrollViewOnTouchListener (4586): false

08-07 21: 57: 14.731: DEBUG / onScroll (4586): onScroll

08-07 21: 57: 14.731: DEBUG / ScrollViewOnTouchListener (4586): false

08-07 21: 57: 14.761: DEBUG / onScroll (4586): onScroll

08-07 21: 57: 14.761: DEBUG / ScrollViewOnTouchListener (4586): false

08-07 21: 57: 14,791: DEBUG / onScroll (4586): onScroll

08-07 21: 57: 14.791: DEBUG / ScrollViewOnTouchListener (4586): false

08-07 21:57: 14.791: DEBUG / ScrollViewOnTouchListener (4586): true


Однако прокрутка не выполняется, хотя это должно быть возможным, поскольку содержимое больше экрана.

Что я делаюнеправильно?

Ответы [ 2 ]

0 голосов
/ 06 августа 2013

Нашли решение по этой ссылке -> Фрагмент с использованием ScrollView внутри RelativeLayout> ontouch не работает

Добавьте следующий код к вашему представлению внутри scrollview

android:clickable="true"
    android:focusable="true"
    android:focusableInTouchMode="true"
0 голосов
/ 10 января 2012

Я думаю, что ваша проблема похожа на ту, что описана в этом сообщении: Scrollview не смахивает, когда она слишком коротка для прокрутки

взгляните на предлагаемое решение, в котором автор расширил класс представления ScrollView. Я верю, что это исправит ваш профессионал

...