繁体   English   中英

Android在保留原始声音的同时添加侦听器

[英]Android add listener while preserving original one

我想在文本选择上进行一些操作,即OnLongClickListener,但在其中需要获取选定的文本,该文本默认情况下由OnLongClickListener处理(至少我认为是)。 通过仅添加我的侦听器,实际结果是调用了我的方法,我试图获取选择范围的索引,但是这些索引为0。我还可以在调试器中看到,在该提示中没有选择任何文本。

码:

textView.setTextIsSelectable(true);
textView.setOnLongClickListener(new View.OnLongClickListener() {
        @Override
        public boolean onLongClick(View v) {
            int start = textView.getSelectionStart();
            int end = textView.getSelectionEnd();
            // the rest of code
        }
    }
}

问题:如何保留默认的侦听器,将首先调用它,然后进行选择,然后再调用我的函数。

我认为您误解了收听者的工作方式。 它们不会替代标准行为,因此没有默认的侦听器可以调用以确保发生某些情况。

在这种情况下,很可能在TextView实际更新其选择之前,仅调用了OnLongClick侦听器。 在这种情况下,您可以尝试让侦听器将其处理延迟到设置了选择之后。 查看为此目的使用Handler.postDelayed()AsyncTask 例如:

textView.setOnLongClickListener(new View.OnLongClickListener() {
        @Override
        public boolean onLongClick(View v) {
            new Handler().post(() -> {/*your code here*/});
        }
    }
}

但是,话虽如此, OnLongClickListener不是用于文本选择更改的正确侦听器。 您需要一个ActionMode回调

如何在TextView中的选定文本上设置侦听器

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM