![](/img/trans.png)
[英]Android: Add view into another while having a click listener on the parent
[英]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回调 :
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.