当前位置: 首页 > 知识库问答 >
问题:

Webview将菜单项添加到TextSelection菜单

爱乐邦
2023-03-14

我有一个android webview默认文本选择的问题。我想做的是添加一个项目到默认菜单,它出现在webview的文本选择上

我想要的功能是添加一个按钮到左侧的全选。如何做到这一点

共有1个答案

丌官利
2023-03-14

您需要重写WebView类,为此您需要使用以下代码,我正在给您演示更改defaut CAB的代码,在选择之后,您可以使用您自己的上下文菜单

public class MyWebView  extends WebView{
CustomizedSelectActionModeCallback actionModeCallback;
public Context context;
public MyWebView(Context context, AttributeSet attrs) {
    super(context, attrs);
    // TODO Auto-generated constructor stub
    this.context=context;
}
@Override
public ActionMode startActionMode(ActionMode.Callback callback) {
    // TODO Auto-generated method stub
    //      ViewParent parent = getParent();
   //        if (parent == null) {
     //            return null;
     //        }
    actionModeCallback = new CustomizedSelectActionModeCallback();
    return startActionModeForChild(this,actionModeCallback);

}

public class CustomizedSelectActionModeCallback implements ActionMode.Callback{

    @Override
    public boolean onCreateActionMode(ActionMode mode, Menu menu) {
        // TODO Auto-generated method stub
        mode.getMenuInflater().inflate(R.menu.contextual_menu, menu);
        return true;

    }

    @Override
    public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
        // TODO Auto-generated method stub
        mode.setTitle("CheckBox is Checked");

        return false;
    }

    @Override
    public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
        // TODO Auto-generated method stub
        switch (item.getItemId()) {
        case R.id.item_delete:
            clearFocus();
            Toast.makeText(getContext(), "This is my test click", Toast.LENGTH_LONG).show();
            break;

        default:
            break;
        }
        return false;
    }

    @Override
    public void onDestroyActionMode(ActionMode mode) {
        // TODO Auto-generated method stub


        clearFocus(); // this  is not clearing the text in my device having version 4.1.2
        actionModeCallback=null;

    }

}

}

java是mainactivity.java

public class MainActivity extends Activity {

MyWebView web_view;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    web_view= (MyWebView)findViewById(R.id.webView1);
    web_view.loadUrl("file:///android_asset/menu_pages/Chemchapter1/OEBPS/Text/07_Chapter01.html");// you can load your html here


}
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="${packageName}.${activityClass}" >


<com.rstm.webviewcheck.MyWebView
    android:id="@+id/webView1"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

</RelativeLayout>  
<?xml version="1.0" encoding="utf-8"?>

<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item

android:id="@+id/item_delete"

android:icon="@android:drawable/ic_menu_delete"

android:showAsAction="ifRoom|withText"

android:title="Delete"

android:titleCondensed="Delete">
 类似资料:
  • 8.2.3.添加菜单项 现在我们已经定义并且注册了这个 Service,接下来考虑一个控制它启动或者停止的方法。最简单的方法就是在我们的选项菜单中添加一个按钮。便于理解起见,我们先从这里入手。更智能的方法我们稍候讨论。 为添加启动/停止的按钮,我们需要在 menu.xml 添加两个菜单项,就像在 "Menu Resource" 一节中添加 Prefs 菜单项一样。更新后的 menu.xml 是这个

  • 我向每个Wordpress菜单项添加了类,但它们没有出现在代码中。 我的菜单: 我的职能。php包括 所以我有 但是没有我在Wordpress管理菜单中添加的任何类。为什么呢?

  • 在React Native中,进行开发构建时,您可以摇动设备或使用菜单按钮打开开发人员菜单。如何将其他自定义项添加到此菜单?我还没有找到任何关于添加另一项的文档,但我认为从“开发”菜单中选择“在服务器环境(开发、产品等)之间切换”会非常方便,而不是针对每个环境进行单独的构建测试。

  • 我有一个WordPress菜单,其中有一些菜单项是我通过标准(拖放)WordPress管理菜单功能添加的。最近,我不得不在菜单中添加另一项,以生成动态href链接。我在函数中使用以下代码实现了这一点。php文件: //将“我的个人资料”菜单项动态添加到“成员”菜单(根据当前登录的用户生成用户名) add_filter(wp_nav_menu_items、add_profilelink_in_men

  • 我正在尝试为我的netbeans平台项目(我正在启动)的一个模块创建一个模拟菜单。 我想在“文件”中创建一个新条目“new”,该条目将包含“new Project”和“new Module”。 在重要文件中- 然后我添加了两个空文件,“New Project”和“New Module”,但它们没有显示出来。 这是图层。xml: 我已经多次删除和创建这些文件,因此有后缀。我唯一添加的是位置。 我想我

  • 有些容器应用程序不提供新建菜单栏的方法,因此,需用 Visual Basic 创建菜单栏。在用 Visual Basic 创建了一个菜单栏之后,就可用容器应用程序接口或继续用 Visual Basic 定义该菜单栏。 在运行时间添加菜单栏 要在运行时间给应用程序添加一个菜单栏,可用CommandBars 集合的Add 方法并将MenuBar 参数指定为 True。以下示例将添加一个不可移动的菜单栏