在发布这个问题之前,我已经搜索了很多,但在这个问题上找不到任何明确的答案.
我必须覆盖android webview的默认文本选择并显示我的自定义文本选择对话框选项.我试过这个示例代码项目.
此示例项目适用于以下设备和模拟器:
不适用于以下设备:
在Android操作系统版本4.1和4.1+而不是显示我的自定义文本选择选项对话框,它显示Android系统的文本选择的默认操作栏.
我对此进行了大量搜索,很多人建议使用onLongClick()方法接口
我已经在这个论坛上问了一个问题请看这个链接,这个问题的答案我能够克隆onLongClick()事件,但我无法停止默认文本选择操作栏.
对于这种情况,我几乎没有问题.
1.为什么onLongClick()方法停止在android os 4.1+上运行的设备上工作?
2.如果长按webview中的文本,如何停止默认文本选择操作栏?
这是我的自定义webview类.
package com.epubreader.ebook;
import org.json.JSONException;
import org.json.JSONObject;
import android.app.Activity;
import android.content.Context;
import android.graphics.Rect;
import android.graphics.Region;
import android.os.Handler;
import android.os.Message;
import android.util.AttributeSet;
import android.util.DisplayMetrics;
import …Run Code Online (Sandbox Code Playgroud) 我想覆盖现有的默认上下文操作栏(CAB)进行文本选择.我的意思是,当我在webview上选择一些文本时,我想用自己的按钮显示我自己的CAB.我尝试使用Android文档实现CAB.OnLongClickListener不捕获Web视图中的文本选择事件.捕获文本选择的事件是什么?是否可以隐藏默认CAB并在文本选择上显示我的CAB?
childWebView.setOnLongClickListener(new OnLongClickListener() {
@Override
// Called when the user long-clicks on someView
public boolean onLongClick(View view) {
if (mActionMode != null) {
return false;
}
// Start the CAB using the ActionMode.Callback defined above
mActionMode = startActionMode(mActionModeCallback);
view.setSelected(true);
return true;
}
});
Run Code Online (Sandbox Code Playgroud) 基本的android的网络文本选择菜单如下图所示.它有复制,共享,全选,网络搜索等选项.
我想过度使用这个菜单并希望它们作为我自己的菜单列表,如"标记颜色","标记为imp"等.我查看有关堆栈溢出的上下文菜单的大部分问题.大多数问题与上下文菜单有关,但没有按预期给出结果.我想要下面的图像菜单
当我执行选择android监视器显示一些视图创建窗体viewRoot喜欢
D/ViewRootImpl: #1 mView = android.widget.PopupWindow$PopupDecorView{648898f V.E...... ......I. 0,0-0,0}
D/ViewRootImpl: #1 mView = android.widget.PopupWindow$PopupDecorView{a66541c V.E...... ......I. 0,0-0,0}
D/ViewRootImpl: MSG_RESIZED_REPORT: ci=Rect(0, 0 - 0, 0) vi=Rect(0, 0 - 0, 0) or=1
D/ViewRootImpl: MSG_RESIZED_REPORT: ci=Rect(0, 0 - 0, 0) vi=Rect(0, 0 - 0, 0) or=1
Run Code Online (Sandbox Code Playgroud)
如何实现这样的实现?
我也浏览了https://github.com/naoak/WebViewMarker但没有得到正确的结果.
我做了什么呢?
我扩展了Android的WebView,我想支持最小的SDK 19.当我执行长按时我得到了长按事件,但我无法获得这样的菜单创建api调用.
我已经实现了一个ActionMode.Callback自定义文本选择功能WebView.我遇到的问题是选择和操作模式状态不匹配.
当我长按时,一切都很好.

当我与其中一个按钮或WebView(不包括实际选择)进行交互时,ActionMode应该销毁它,并且选择应该消失.

在Android 4.4,KitKat中,这正是发生的事情.
然而,这不是4.1.1 - 4.3,Jelly Bean中发生的情况.单击其中一个按钮时,不会删除选择.

当我在选择之外点击时,恰好相反.删除选择,但上下文操作栏仍保留在屏幕上.
Run Code Online (Sandbox Code Playgroud)
android selection webview contextual-action-bar android-actionmode
Hy,我在longClick上的webview选择有问题.我已经有了一个在longClick上启动的自定义菜单的实现.但默认菜单也会启动.我正在尝试自定义默认菜单,但我不知道如何捕获项目上的用户点击.我尝试过以下操作,但菜单正在变为垂直并隐藏选择,因此我无法选择更多单词或更改选择.
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo)
{
super.onCreateContextMenu(menu, v, menuInfo);
MenuInflater inflater = getMenuInflater();
/*
public void inflate (int menuRes, Menu menu)
Inflate a menu hierarchy from the specified XML resource. Throws InflateException if there is an error.
Parameters
menuRes : Resource ID for an XML layout resource to load (e.g., R.menu.main_activity)
menu : The Menu to inflate into. The items and submenus will be added to this Menu.
*/
inflater.inflate(R.menu.menu, menu);
}
@Override
public boolean …Run Code Online (Sandbox Code Playgroud) 我正在开发一个应用程序,我需要获取所选文本.
我有一个自定义上下文操作栏,当用户在webview中选择文本时会显示该操作栏.我想在选择处理程序下单击我的操作栏按钮获得突出显示的文本.
先问过问题, 如何在android webview中获取所选文本.
但没有解决方案.
我正在尝试类似myWebView.getSelection()的东西
我有一个要求,比如当我长按网页视图中的文字时点击长按,我应该设置我的自定义上下文菜单项而不是"选择","全选","网页搜索".
请帮我.

想要覆盖这些默认的"全选","复制","分享","网络搜索".在这个地方想要我的自定义菜单.
我想禁用本地上下文菜单,当你选择一些文本显示,一个与select all,copy,share和search按钮.但是,我不想自己禁用选择.理想情况下,我希望实际扩展菜单,但说实话,我只是禁用它完全没问题.对于文本字段等,它从我发现的文档中往往相对简单,但我无法找到一种方法来使用XWalkView/ CordovaWebView.可能是因为我只是在完全错误的角落里寻找.
android ×8
webview ×5
selection ×2
android-menu ×1
contextmenu ×1
cordova ×1
java ×1
long-click ×1