EditText не захватывает броски ViewFlipper? - PullRequest
3 голосов
/ 22 августа 2010

Это сводит с ума. У меня есть следующий формат XML:

<FrameLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="@drawable/shadow" android:focusable="true" android:focusableInTouchMode="true">
    <ViewFlipper android:id="@+id/flipper" android:layout_width="fill_parent" android:layout_height="fill_parent">
        <EditText android:id="@+id/reviews" style="@style/DescriptionArea" android:layout_width="fill_parent" android:layout_height="wrap_content" android:enabled="false" android:background="@null" />
     <EditText android:id="@+id/notes" style="@style/DescriptionArea" android:hint="@string/detail_hint" android:layout_width="fill_parent" android:layout_height="wrap_content" android:enabled="false" android:maxLines="4"/>
    </ViewFlipper>
</FrameLayout>

И Java:

viewFlipper = (ViewFlipper)findViewById(R.id.flipper);
    slideLeftIn = AnimationUtils.loadAnimation(this, R.anim.slide_left_in);
    slideLeftOut = AnimationUtils.loadAnimation(this, R.anim.slide_left_out);
    slideRightIn = AnimationUtils.loadAnimation(this, R.anim.slide_right_in);
    slideRightOut = AnimationUtils.loadAnimation(this, R.anim.slide_right_out);

    gestureDetector = new GestureDetector(new MyGestureDetector());
    gestureListener = new View.OnTouchListener() {
        public boolean onTouch(View v, MotionEvent event) {
            if (gestureDetector.onTouchEvent(event)) {
                return true;
            }
            return false;
        }
    };

Кажется, что если я попытаюсь бросить поверх области EditText, жест не регистрируется. Однако, если я бросаю вокруг , то есть фон EditText, он работает. Я попытался следовать с высоты и ширины fill_parent / wrap_content, но это, похоже, ничего не меняет. Я подтвердил это подозрение, что я сделал фон EditText «красным» и заметил, что ничто внутри этого красного прямоугольника не может активировать бросок. Так как мне сделать эту работу?

Ответы [ 2 ]

5 голосов
/ 22 августа 2010

Вы можете переопределить метод dispatchTouchEvent действия:

@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
    if (gestureDetector != null) {
        gestureDetector.onTouchEvent(ev);
    }
    return super.dispatchTouchEvent(ev);
}

Очевидно, что gestDetector является переменной-членом, которую необходимо объявить и инициализировать в своей деятельности.

1 голос
/ 27 октября 2010

попробуйте применить setLongClickable(true) для ViewFlipper

...