Выбор текста не работает в пользовательском веб-просмотре
Я хочу выделить выделенный текст в моем 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()
на веб-просмотре проигрывает, просто прокручивается по горизонтали.
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 виден и работает, но проблема не выделена.
1 ответ
Пожалуйста, дайте мне знать, каков ваш настоящий вопрос: выделение выделенного текста ИЛИ эффект переворачивания страницы не работает должным образом?
Вы имели в виду, что вы используете другую библиотеку, такую как https://github.com/openaphid/android-flip и она не работает?
ИМХО, а как насчет того, чтобы использовать свой собственный детектор жестов и вернуть событие super onTouch?
Возвращение true для onTouchEvent означает, что вы хотите использовать событие и предотвратить распространение на родительский объект.
@Override
public boolean onTouchEvent(MotionEvent event) {
gestureDetector.onTouchEvent(event);
return super.onTouchEvent(event);
}
Подробности смотрите: http://developer.android.com/reference/android/view/View.OnTouchListener.html
Msgstr " Возвращает True, если слушатель использовал событие, иначе false."