【问题标题】:webview show popup options androidwebview显示弹出选项android
【发布时间】:2013-12-19 16:56:41
【问题描述】:

当用户从 webview 中选择文本时,我需要提供如下图所示的选项。

我应该重写哪个方法来提供选项?

【问题讨论】:

    标签: android webview


    【解决方案1】:

    WebView 中的复制功能在 Android 3.0 及更高版本中默认可用。要在低于 3.0 的版本中启用复制,必须添加一些代码。我做的第一件事是在视图底部的Actionbar 中添加一个复制按钮。

    查看Copy Text in a WebView in Android

    下面是展示如何使用的代码:

    public class TryDemoActivity extends Activity implements
    OnClickListener {
        private WebView webview1;
        private Button copyButton;
        private Button pasteButton;
        private Button highlightButton;
        private ClipboardManager clipboard;
        /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        webview1 = (WebView) findViewById(R.id.webview);
        copyButton = (Button) findViewById(R.id.copy);
        pasteButton = (Button) findViewById(R.id.paste);
    
        webview1.loadUrl("file:///android_asset/1.1.html");
        clipboard =(ClipboardManager) getSystemService(CLIPBOARD_SERVICE);
        copyButton.setOnClickListener(this);
        pasteButton.setOnClickListener(this);
    }
    private void emulateShiftHeld(WebView view)
    {
        try
        {
            KeyEvent shiftPressEvent = new KeyEvent(0, 0, KeyEvent.ACTION_DOWN,
    KeyEvent.KEYCODE_SHIFT_LEFT, 0, 0);
        shiftPressEvent.dispatch(view);
    
        registerForContextMenu(view);
        Toast.makeText(this, "select_text_now", Toast.LENGTH_SHORT).show();
    
        }
        catch (Exception e)
        {
            Log.e("dd", "Exception in emulateShiftHeld()", e);
        }
    }
    @Override
    public void onClick(View v) {
        switch(v.getId())
        {
            case R.id.copy:
                emulateShiftHeld(webview1);
            break;
            case R.id.paste:
            Toast.makeText(this, clipboard.getText(),Toast.LENGTH_SHORT).show();
            break;
        }
       }
     }
    

    已编辑:

    注意:代码 emulateShiftHeld 在 4.0 中已被弃用,这可能是它在 2.2 中工作而不在 4.0 中工作的原因。

    查看我找到的Post HERE

    【讨论】:

    • 感谢 4 回复。但在 android 4.0 中不允许我选择。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-21
    相关资源
    最近更新 更多