2012-04-17 65 views
0

我需要一个每次在EditText中进行选择更改时都会调用的侦听器。 我搜索了一下,但找不到任何对API级别7有用的东西。 我正在编写文本编辑器,并且每次用户选择粗体/斜体/带下划线的文本时,都希望显示粗体/斜体/带下划线的按​​钮。Android中的文本选择侦听器(API级别7)

+0

你试过这个吗? http://developer.android.com/reference/android/widget/TextView.html#addTextChangedListener%28android.text.TextWatcher%29 – Shubhayu 2012-04-17 09:19:34

+0

根据TextWatcher的描述 “将TextWatcher添加到其方法列表中只要这个TextView的文本发生变化就调用它。“ 我需要的是一个监听器,它告知何时文本上的选择被改变而不是文本。 PS: 我刚刚尝试过,并且在选择更改时没有任何TextWatcher的侦听器被调用。 – Sazbak 2012-04-17 10:32:05

+0

您是否在扩展EditText以编辑您的编辑器? – Shubhayu 2012-04-17 10:42:28

回答

0

更好的方法是扩展EditText,然后根据您想要如何管理不断变化的文本,您可以重写2种方法之一来计算出您的自定义行为。

  1. 如果你想改变选择,那么你可以使用onSelectionChanged()方法并在那里实现你的代码。

  2. 如果您想要在编辑器中更改文字时执行某些操作,则可以使用onTextChanged()

3

漂亮的老问题,但有人可能仍然需要这个,所以这里是我的解决方案:由于与长按文本完成的文本选择,我只是用了以下内容:

editText.setOnLongClickListener(new View.OnLongClickListener() { 

@Override 
public boolean onLongClick(View view) { 
     // do whatever you need to do on text selection 
    } 
}); 

这使得用于文本选择的自定义行为,并且不会阻止用户复制/粘贴。

+2

如果您仍希望EditText执行其longPress处理程序并选择文本,并返回true,那么一定要在此返回false你会得到你的onLongClick()exectuted。 – 2016-04-13 17:08:09

相关问题