В одном из представлений в приложении тренировки я пытаюсь выполнить выделение текста программно.
Я могу (программно) войти в «режим выделения текста», который визуально обозначается CursorControllers (ручки AKA) в верхнем левом углу представления.
Если я вручную перетаскиваю правый CursorController, затем нажимаю его снова (в эмуляторе), он работает как положено (отлично), показывая короткое сообщение: «Текст скопирован в буфер обмена».
Но когда я пытаюсь программно перетащить этот правый CursorController, ничего не происходит.
Я пытаюсь это сделать, имитируя MotionEvent. По мнению, я звоню:
event = MotionEvent.obtain(downTime, eventTime, MotionEvent.ACTION_DOWN, x, y, 0);
MainActivity.onTouch(this, event);
В MainActivity я, конечно, реализую 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;
}
Если я правильно понимаю, просто возвращая false из onTouch, Android продолжает искать другой объект пользовательского интерфейса для использования объекта MotionEvent, в конечном итоге достигая моего вида .
Почему этого не происходит?
Я, должно быть, упускаю что-то очень фундаментальное ...