사용자 터치 이벤트의 좌표를 캡처하려고합니다 (이 경우 onTouch
메서드를 구현했습니다)하지만 사용자가 화면을 터치 할 때 컨텍스트 메뉴를 표시하려고합니다.onTouch와 onCreateContextMenu를 동시에 사용하여
onTouch
및 onCreateContextMenu
방법을 모두 사용하는 경우 모든 터치 이벤트는 onTouch
방법으로 전송됩니다. onCreateContextMenu
메서드는 호출되지 않습니다. 나는 이것이 예상된다고 생각한다. 그런 다음 openContextMenu(v)
onTouch
메서드에서 호출하여 상황에 맞는 메뉴를 수동으로 시도했지만이 작동하지만 onContextItemSelected(MenuItem item)
호출 후에 메뉴가 화면에서 사라지지 않습니다. 그러면 어떻게이 일을 할 수 있을까요?
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.record_match);
myCourtView = new MyImageView(getApplicationContext());
ll = (LinearLayout)findViewById(R.id.linearLayout);
ll.addView(myCourtView, new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
registerForContextMenu(myCourtView);
myCourtView.requestFocus();
myCourtView.setOnTouchListener(this);
}// End OnCreate
// Implement the OnClickListener callback
public boolean onTouch(View v, MotionEvent event) {
//do something when user interacts with the court view
myCourtView.processEvent(event);
openContextMenu(v);
myCourtView.invalidate();
return true;
}//End OnClickListener
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.shot_entry_menu, menu);
}//End onCreateContextMenu
@Override
public boolean onContextItemSelected(MenuItem item) {
AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
switch (item.getItemId()) {
case R.id.player_1:
//do something
return true;
case R.id.player_2:
//do something else
return true;
}
return true;
}//End onContextItemSelected