2013-04-19 4 views
2

컨텍스트 메뉴와 관련하여 보았던 모든 예제와 질문은 상황에 맞는 메뉴를 버튼이나 비슷한 것으로 등록한 곳입니다. 제 경우에는 표시 크기가 조정 된보기 (OSMDroid 맵보기)가 있습니다. 길게 누르는 제스처가 맵보기의 눌려진 노드에서 전달됩니다. 긴 키를 눌러 컨텍스트 메뉴를 열어 그 노드에서 작업을 수행 할 수 있습니다.보기를 길게 누르면 상황에 맞는 메뉴가 열리나요?

문제는 상황에 맞는 메뉴에 MapView를 등록 할 때보기 자체 또는보기의 노드를 길게 누르면 실행됩니다. 예 : 그것은보기를 위해 등록되었습니다. (나쁜!)

보기에 대한 상황에 맞는 메뉴를 등록하지 않으면 길게 누르면 노드를 선택했을 때만 정밀하게 트리거됩니다. (좋은!) 그러나 처음에는 등록되지 않은 컨텍스트 메뉴를 프로그래밍 방식으로 표시하거나 트리거하는 방법에 대한 단서가 없습니다.

필요에 따라 컨텍스트 메뉴를 표시하면됩니다. 누구든지 어떤 제안이 있습니까? 감사!

@Override 
public void onCreate(final Bundle savedInstanceState) { 
    ... 
    this.mapView = (MapView) findViewById(R.id.mapview); 
    this.registerForContextMenu(this.mapView); // <-- This will register the entire view for a long press context menu 
    ... 
} 
... 

class NodeGestureListener implements OnItemGestureListener<NodeOverlayItem> { 
    @Override 
public boolean onItemLongPress(int index, NodeOverlayItem node) { 
    openContextMenu(mapView); // <-- This won't display anything 
    return false; 
} 
} 
... 

@Override 
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { 
    super.onCreateContextMenu(menu, v, menuInfo); 
    getMenuInflater().inflate(R.menu.node_menu, menu); 
} 

답변

1

EveryThing은 고유 한 목적과 구조를 가지고 있습니다. 따라서 사용 방법으로 무언가를 사용하는 것이 항상 좋습니다. 같은 일이 메뉴와 함께 진행됩니다.

상황에 맞는 메뉴 메커니즘없이 긴 클릭 이벤트가 발생하면 즉각적인 팝업을 원할 경우 AlertDialog를 사용하는 것이 좋습니다.

+0

문맥 메뉴를 올바르게 사용하고 있습니다. 그것은 내가 막혀있는 뷰로, 길게 누르는 리스너보다 먼저 onCreateContextMenu를 트리거합니다. 기존의 MapView 긴 누름 수신기는 자체 기본 동작을 수행합니다. 나는 그렇지 않더라도 좋겠지 만 긴 누름이 시작될 때 컨텍스트 메뉴를 열면 더 쉬울 것이라고 생각합니다. – garlicman

+0

그리고 AlertDialog로는 충분하지 않습니다. 하나는 ContextMenu를 선택하기 때문에 가능한 많은 옵션을 동적으로 포함 할 수 있습니다. – garlicman

+0

어떤 디자인이든 사용자 정의 대화 상자를 만들 수 있습니다. – stinepike

1

작업 표시 줄을 살펴볼 수 있습니다. 3.0 용으로 개발되었지만, 지원 라이브러리는 훨씬 오래된 자료에서 작동합니다. docs은 사용중인 메뉴 스타일 이 좋지 않음을 나타냅니다. 작업 표시 줄을 사용하는 것이 좋습니다. 보너스 : 오래된 긴 보도 메뉴보다 다루기가 훨씬 쉽습니다.

+0

조치 표시 줄을 사용할 수 있습니다. 나는 메뉴가 단 두 개의 버튼보다 더 많은 정보를 전달할 것이라고 기대했다. 길게 누르면 OSMdroid 맵에있는 노드를 볼 수 있습니다. 따라서 "오래된 길게 누르는 메뉴"가 무슨 뜻인지 잘 모르겠습니다. – garlicman

관련 문제