Android: как определить координаты экрана при долгом нажатии, которое открывает контекстное меню - PullRequest
2 голосов
/ 01 января 2011

Основной вид моего приложения отображает графический холст.Метод onCreate основного действия содержит команду registerForContextMenu(mapview);, поэтому при длительном нажатии пользователем этого представления открывается контекстное меню, содержимое которого определяется методом onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) действия.изменить содержимое меню в соответствии с местоположением прессы, но я не вижу, как узнать это место.Кажется, что ни один из аргументов, предоставленных onCreateContextMenu, не предоставляет эту информацию.

1 Ответ

3 голосов
/ 01 января 2011

Хитрый и просто удар в темноте, я боюсь ...

Вы не упоминаете, какой у вас класс 'main View', но если он является "родным" классом android, то получите свой собственный, расширяющий тот, который вы используете в настоящее время.

Предоставьте вашему классу общедоступные элементы данных X и Y, например, ...

public int lastKnownX; // Might be float types - can't remember
public int lastKnownY;

Также в вашем классе переопределите onTouch(View v, MotionEvent event) и проверьте MotionEvent, чтобы увидеть, является ли это событием ACTION_DOWN - если это так, сохраните координаты X и Y в lastKnownX и lastKnownY. - игнорируйте любые другие события и убедитесь, что вы ВСЕГДА возвращаете false независимо от действия движения (чтобы сделать процесс прозрачным).

Моя теория состоит в том, что когда интерпретируется длинный щелчок / нажатие, ваши последние известные координаты ACTION_DOWN будут теми, с которых начался этот длинный щелчок, и потому, что они доступны для вашей деятельности (вы определили их как публичные ), метод onCreateContextMenu() сможет использовать их.

С другой стороны, я мог бы быть далеко, но вот как я подхожу к проблеме. Стоит попробовать. : -)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...