stackoverflow.com/questions/5240287/...
ом из представлений в приложении упражнений я пытаюсь выполнить выделение текста программно.
Я могу (программно) войти в «режим выделения текста», который визуально обозначен 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;
}
Если я правильно понимаю, просто возвращая «ложь» из onTouch,Android продолжает искать другой объект пользовательского интерфейса для использования объекта MotionEvent, в конечном итоге достигнув моего взгляда.
Почему этого не происходит?
Я должен упустить что-то очень фундаментальное ...