【问题标题】:Webview Add Menu Item to TextSelection MenuWebview 将菜单项添加到 TextSelection 菜单
【发布时间】:2014-05-19 12:15:18
【问题描述】:

我在使用 android webview 默认文本选择时遇到问题。我想要做的是将一个项目添加到默认菜单中,该菜单出现在 webview 中的文本选择中

我想要实现的功能是在全选左侧添加一个按钮。这是怎么做到的

【问题讨论】:

    标签: android webview android-webview


    【解决方案1】:

    您需要为此重写 WebView 类,您需要使用此代码我正在为您提供演示代码,用于在选择后更改默认 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;
    
        }
    
    }
    

    }

    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
    
    
    }
    

    }

    activity_main.xml

    <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>  
    

    contextual_menu.xml

    <?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">
    

    【讨论】:

    • 感谢兄弟,它帮了很多忙,而且工作得很好:) JazakAllah
    • 兄弟,我们可以在这个栏添加原生搜索按钮吗?就像它在默认情况下工作一样,我希望搜索功能正常工作。或者我应该为其添加自定义代码
    • 是的!兄弟,您需要为其编写自定义代码在自定义 CAB 中添加搜索按钮并应用自定义代码。
    • 我假设onActionItemClicked 应该返回true,并且必须调用mode.finish() 来关闭CAB。你没有做这两件事。采取行动后如何关闭 CAB?
    • 这去掉了原来的菜单项。如果我想保留这些物品怎么办?
    猜你喜欢
    • 1970-01-01
    • 2012-10-24
    • 1970-01-01
    • 2011-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-01
    • 1970-01-01
    相关资源
    最近更新 更多