2010-05-26 3 views
1

У меня есть пользовательский вид, который отлично работает, и я пытаюсь ввести в него жесты. Наиболее распространенный метод, который я вижу, это добавить XML, такие как это (от Android документы:Как программно добавить представление Android Gestures к пользовательскому представлению?

<android.gesture.GestureOverlayView 
    android:id="@+id/myGestures" 
    android:layout_width="fill_parent" 
    android:layout_height="0dip" 
    android:layout_weight="1.0" 
    /> 

мой взгляд в RelativeView и когда я пытаюсь ссылаться на этот GetureOverlayView, я получаю исключение

. Я также попытался соединить в мой существующий пользовательский класс вида, например:.

mGestures = new GestureOverlayView(context, attrs); 
mGestures.addOnGesturePerformedListener(this); 

Но обратные вызовы никогда не вызывается

Может кто-то точка из моих ошибок, предложите лучший способ, который позволит мне получить обратные вызовы жестов и/или предложить диагностические подходы?

+0

Можете ли вы опубликовать трассировку стека исключений? Вы можете получить его командой 'adb logcat'. Также обратите внимание, что при создании представлений программно вам нужно назначить ширину и высоту (см. «LayoutParams'). –

ответ

2

Привет, Я столкнулся с вашим вопросом, поскольку я изо всех сил пытался найти решение одной и той же проблемы: у меня есть пользовательский вид, калибр, с которым мне не удалось заставить жесты работать (пока я не нашел ваш вопрос) ,

Я смог решить проблему, отсюда и этот ответ.

Я обнаружил, что мое представление возвращало события щелчка, но действие всегда было 0, для ACTION_DOWN ... В то время как на моем другом макете, где были жесты, я получал различные действия для любого отдельного жеста.

Я пошел вперед и взял linearlayout, который был неудачным, и заключил его в gestureOverlayView, используя ваш код выше. С одной разницей в том, что я разместил всю свою линейную линию в пределах gestureoverlay. Ваш пример выше показывает gestureoverlay как автономное сущность, в котором ничего нет, что, вероятно, послужило причиной ваших проблем.

Чтобы использовать его, я просто зарегистрировать свой жест-слушателя против OverlayView следующим образом:

((GestureOverlayView) findViewById(R.id.myGestures)).setOnTouchListener(gestureListener); 

Мои извинения за быстрый ответ, но я надеюсь, по крайней мере, я могу пролить некоторый свет на ваш вопрос, или помогайте кому-либо другому, кто сталкивается с этой причудой, когда они работают с жестами.

BH

Смежные вопросы