gpt4 book ai didi

android - 同时使用 onTouch 和 onCreateContextMenu

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:51:08 25 4
gpt4 key购买 nike

我希望捕获用户触摸事件的坐标(为此我实现了 onTouch 方法),但我还想在用户触摸屏幕时显示上下文菜单。

当同时使用 onTouchonCreateContextMenu 方法时,每个触摸事件都会发送到 onTouch 方法。 onCreateContextMenu 方法从未被调用。我想这是意料之中的。然后,我尝试通过在 onTouch 方法中调用 openContextMenu(v) 来手动显示上下文菜单,这有效,但是在 之后菜单不会从屏幕上消失>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

最佳答案

你应该在 onTouch 中返回 false:

如果监听器已使用该事件,则为 True,否则为 false。

关于android - 同时使用 onTouch 和 onCreateContextMenu,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5863754/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com