이것은 나에게 다소 해킹 된 것처럼 보이지만 View의 터치 이벤트를 직접 처리하지 않고도이 작업을 수행 할 수있는 유일한 방법입니다 (적절한 방법 일 수 있습니다).
문맥 메뉴가 열리면 본질적으로 TextView의 LinkMovementMethod
이 변경되므로 위로 동작으로 링크가 실행되지 않습니다. 상황에 맞는 메뉴가 닫히면 LinkMovementMethod
을 복원하여 링크의 정상 클릭이 예상대로 작동하도록합니다. 다음과 같이
은 onCreateContextMenu()
방법을 조정합니다
textView.setOnCreateContextMenuListener(new OnCreateContextMenuListener() {
@Override
public void onCreateContextMenu(ContextMenu menu,
View view,
ContextMenu.ContextMenuInfo info) {
textView.setMovementMethod(ArrowKeyMovementMethod.getInstance());
// Do stuff
}
});
는 그런 활동의 onContextMenuClosed()
과 같이 오버라이드 (override) :
물론
@Override
public void onContextMenuClosed(Menu menu)
{
textView.setMovementMethod(LinkMovementMethod.getInstance());
}
,이 textView
이 활동의 클래스 멤버 있다고 가정합니다.
불행히도,이 경우'textView'는 활동에서 몇 가지 추상화 계층의 사용자 정의보기의 구성원입니다. 상위 액티비티를 사용하여보기를 알리는 것은 지저분한 일이므로 가장 좋은 방법은 'GestureDetector'또는 'OnLongClickListener'를 통해 터치 이벤트를 직접 가로 채고 다른 유형의 터치 이벤트가 발생할 때까지 플래그를 통해 ACTION_UP 이벤트를 사용하지 않도록 설정하는 것입니다. – allenc
@allenc 그래, 터치 이벤트를 처리하는 것은 확실한 해결책 일 것입니다. 나는 당신이 당신의 질문을 피하고 싶다고 말한 것을 읽었을 것입니다. –