У меня есть TextView, который запускает контекстное меню:Android - длинное нажатие, чтобы открыть на TextView контекстное меню также вызывает Автоссылка нажмите
textView.setOnCreateContextMenuListener(new OnCreateContextMenuListener() {
@Override
public void onCreateContextMenu(ContextMenu contextMenu,
View view,
ContextMenu.ContextMenuInfo contextMenuInfo) {
// Do stuff...
}
});
Это TextView также имеет атрибут android:autoLink="all"
набор в XML.
Теперь, если я устанавливаю содержимое TextView на URL-адрес и долгое время нажимаю на URL-адрес, сначала появляется контекстное меню, но когда я поднимаю палец, ссылка нажимается и открывается браузер.
Есть ли способ, чтобы контекстное меню или длительное нажатие потребляли событие касания, чтобы ссылка не была нажата? Я рассмотрел переопределение onTouch()
для TextView для обработки событий ACTION_UP, но я не могу надежно отслеживать, когда отображается контекстное меню для блокировки события касания.
К сожалению, в этом случае 'textView' является членом пользовательского представления нескольких слоев абстракции вниз от Activity. Кажется беспорядочным полагаться на родительскую активность, чтобы уведомить мнение, поэтому наилучшим способом может быть прямой перехват событий касания через «GestureDetector» или «OnLongClickListener» и отключить события ACTION_UP с помощью флага до тех пор, пока не произойдет другой тип события касания. – allenc
@allenc Да, обработка сенсорных событий определенно будет более прочным решением. Наверное, я прочитал ваш вопрос, говоря, что вы хотели этого избежать. –