我想在文本选择上发生一些事情,即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
}
}
}
问题:如何保留默认侦听器,首先调用它并进行选择,然后调用我的函数。
答案 0 :(得分:0)
我认为你误解了听众的工作方式。它们不会替换标准行为,因此没有默认侦听器可以调用以确保发生某些事情。
在这种情况下,很可能只是在OnLongClick
实际更新其选择之前调用了您的TextView
侦听器。在这种情况下,您可以尝试让听众delay its processing在设置选择之前。为此目的,请使用Handler.postDelayed()
或AsyncTask
。例如:
textView.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
new Handler().post(() -> {/*your code here*/});
}
}
}
但是,话虽如此,OnLongClickListener
并不是用于文本选择更改的正确监听器。您需要 ActionMode回调: