我目前正在尝试获取一个自定义的WebView,当被长时间按下时显示上下文菜单。由于默认的WebView类只有在链接被长按时才会显示上下文菜单,所以我编写了自己的类来覆盖这种行为:
public class MyWebView extends WebView {
Context context;
GestureDetector gd;
public MyWebView(Context context, AttributeSet attributes) {
super(context, attributes);
this.context = context;
gd = new GestureDetector(context, sogl);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
return gd.onTouchEvent(event);
}
GestureDetector.SimpleOnGestureListener sogl =
new GestureDetector.SimpleOnGestureListener() {
public boolean onDown(MotionEvent event) {
return true;
}
public void onLongPress(MotionEvent event) {
// The ContextMenu should probably be called here
}
};
}
这段代码没有问题,长按事件被检测到并调用了onLongPress方法,但是当涉及到显示ContextMenu时,我有些困惑。我尝试在我的Activity中按照通常的方式来实现:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.layout);
MyWebView mwv = (MyWebView) findViewById(R.id.mwv);
registerForContextMenu(mwv);
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenu.ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.context, menu);
}
然而,当我在模拟器中长按MyWebView时,没有任何反应。我需要从onLongPress()中调用什么来显示上下文菜单?