(Android)有没有办法检测何时在webview中选择了文本?

时间:2013-08-22 18:18:56

标签: android webview

在API 11+中,当长按WebView中的文本时,将显示上下文操作栏(CAB)。我不想覆盖现有的菜单项,因此实现我自己的ActionMode.Callback并不是正确的答案。我只是想知道何时显示默认的CAB,以便我知道文本选择已经开始,这样我就可以锁定WebView上的滚动。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

如果您想知道屏幕上的默认CAB何时出现,您可以在ACTION_UP之后检查它是否存在:

public class MainActivity extends ActionBarActivity {
WebView mWebView;
boolean mSelected;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    mWebView = (WebView) findViewById(R.id.wvExample);
    mWebView.loadUrl("file:///android_asset/webpage.html");

    mWebView.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {

            if (event.getAction() == MotionEvent.ACTION_UP) {

                View root = getWindow().getDecorView();
                View cabButton = root.findViewById(R.id.action_mode_close_button);

                if (cabButton != null && !mSelected) {
                    Toast.makeText(getApplicationContext(), "Text is now selected", Toast.LENGTH_SHORT).show();
                    mSelected = true;
                } else {
                    mSelected = false;
                    Toast.makeText(getApplicationContext(), "No Text Selected", Toast.LENGTH_SHORT).show();
                }

            }

            return false;
        }
    });
.....