我想在我的 中突出显示选定的文本CustomWebView
,因为我实现Actionmode
如下......
public class CustomWebView extends WebView {
public ActionMode mActionMode;
public ActionMode.Callback mActionModeCallback;
private ActionMode.Callback mSelectActionModeCallback;
public CustomWebView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public CustomWebView(Context context) {
super(context);
this.context = context;
sm = new ScreenManager((Activity) context);
}
@Override
public ActionMode startActionMode(Callback callback) {
ViewParent parent = getParent();
if (parent == null) {
return null;
}
String name = "";
if (callback != null)
name = callback.getClass().toString();
if (name.contains("SelectActionModeCallback")) {
mSelectActionModeCallback = callback;
}
System.out.println("startActionMode"+name);
mActionModeCallback = new CustomActionModeCallback();
return super.startActionModeForChild(this, mActionModeCallback);
}
private class CustomActionModeCallback implements ActionMode.Callback {
@Override
public boolean onCreateActionMode(ActionMode mode, Menu menu)
mActionMode = mode;
MenuInflater inflater = mode.getMenuInflater();
inflater.inflate(R.menu.reader_epub_menu, menu);
return true;
}
@Override
public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
return false; // Return false if nothing is done
}
@Override
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
switch (item.getItemId()) {
case R.id.action_highlight_add:
loadUrl(highlightSelection());
break;
case R.id.action_note_add:
frag.call(spineIndex, tocIndex);
break;
}
mActionMode.finish();
return true;
}
@Override
public void onDestroyActionMode(ActionMode mode) {
frag.makeSwipeEnable();
clearFocus(); // Remove the selection highlight and handles.
if (mSelectActionModeCallback != null) {
mSelectActionModeCallback.onDestroyActionMode(mode);
}
mActionMode = null;
}
}
public ActionMode getActionMode() {
return mActionMode;
}
and my in my reader fragment implemented Gesture listner as follows
public class GestureListener extends
GestureDetector.SimpleOnGestureListener {
@Override
public void onLongPress(MotionEvent e) {
makeSwipeDisable();
reader.startActionMode(reader.mActionModeCallback);
reader.dispatchTouchEvent(e);
super.onLongPress(e);
}
}
在我从以下内容中删除 onTouchEvent 后,它可以工作,但是onFling()
webview 上的内容丢失了,它只是水平滚动。
reader = new CustomWebView(getActivity()) {
@Override
protected void onScrollChanged(int l, int t, int oldl, int oldt) {
// TODO Auto-generated method stub
super.onScrollChanged(l, t, oldl, oldt);
// checking whether the current page has been bookmarked and
// animates the ribbon down and up
if (isBookmarked(rOffset, currentContent))
scaleDown();
else
scaleUp();
}
@Override
public boolean onTouchEvent(MotionEvent event) {
return (gestureDetector.onTouchEvent(event) || super
.onTouchEvent(event));
}
这段代码有什么问题吗?CAB 是可见的并且可以工作,但问题是没有选择文本。