컨텍스트 메뉴와 관련하여 보았던 모든 예제와 질문은 상황에 맞는 메뉴를 버튼이나 비슷한 것으로 등록한 곳입니다. 제 경우에는 표시 크기가 조정 된보기 (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);
}
문맥 메뉴를 올바르게 사용하고 있습니다. 그것은 내가 막혀있는 뷰로, 길게 누르는 리스너보다 먼저 onCreateContextMenu를 트리거합니다. 기존의 MapView 긴 누름 수신기는 자체 기본 동작을 수행합니다. 나는 그렇지 않더라도 좋겠지 만 긴 누름이 시작될 때 컨텍스트 메뉴를 열면 더 쉬울 것이라고 생각합니다. – garlicman
그리고 AlertDialog로는 충분하지 않습니다. 하나는 ContextMenu를 선택하기 때문에 가능한 많은 옵션을 동적으로 포함 할 수 있습니다. – garlicman
어떤 디자인이든 사용자 정의 대화 상자를 만들 수 있습니다. – stinepike