studio programacion herramientas fundamentos con avanzado aplicaciones android events touch textselection

programacion - manual de android en pdf



¿Por qué no funciona esta simulación MotionEvent? (2)

El OnTouchListener se llama dentro de la Vista desde dispatchTouchEvent que a su vez ha sido llamado desde ViewGroup o TouchDelegate . Si llama al oyente desde su punto de vista, simplemente hace lo que tenga allí y luego regresa. No delega mágicamente el evento táctil en ningún lado.

En su lugar, llame a dispatchTouchEvent() en su vista para obtener el resultado correcto.

Para probar la unidad de su comportamiento de la aplicación en la selección de texto, etc. Consulte http://developer.android.com/resources/tutorials/testing/activity_test.html

En una de las vistas de una aplicación de ejercicios, intento realizar la selección de texto mediante programación.

Puedo ingresar (mediante programación) al "modo de selección de texto", que está visualmente indicado por CursorControllers (controladores AKA) en la esquina superior izquierda de la vista.

Si arrastro manualmente el CursorController derecho, luego lo hago clic de nuevo (en el emulador), funciona como se esperaba (perfectamente), mostrando un breve mensaje: "Texto copiado en el portapapeles".

Pero cuando trato de arrastrar programáticamente ese CursorController correcto, no pasa nada.

La forma en que trato de hacer esto es simulando un MotionEvent. En la vista, llamo:

event = MotionEvent.obtain(downTime, eventTime, MotionEvent.ACTION_DOWN, x, y, 0); MainActivity.onTouch(this, event);

En MainActivity I, por supuesto, implemento OnTouchListener:

@Override public boolean onTouch(View v, MotionEvent event) { // called BEFORE button''s onTouchEvent() Log.v("MainActivity::onTouch()", describeEvent(v, event)); switch (event.getAction()) { case MotionEvent.ACTION_DOWN: case MotionEvent.ACTION_UP: if (!v.hasFocus()) { v.requestFocus(); } break; } return false; }

Si entiendo correctamente, simplemente devolviendo ''falso'' desde onTouch, Android sigue buscando otro objeto UI para consumir el objeto MotionEvent, llegando finalmente a mi punto de vista .

¿Por qué no sucede esto?

Debo extrañar algo muy fundamental ...