Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android中的文本选择侦听器(API级别7)_Android_Text_Selection - Fatal编程技术网

Android中的文本选择侦听器(API级别7)

Android中的文本选择侦听器(API级别7),android,text,selection,Android,Text,Selection,我需要一个监听器,每次编辑文本中的选择更改时都会调用它。 我在谷歌上搜索了一下,但找不到任何对API级别7有用的东西。 我正在编写一个文本编辑器,希望每次用户选择粗体/斜体/下划线文本时,粗体/斜体/下划线按钮都处于选中状态。更好的方法是扩展编辑文本,然后根据您希望如何管理更改的文本,您可以重写这两种方法中的一种,以确定您的自定义行为 如果希望更改选择,则可以使用onSelectionChanged()方法并在那里实现代码 如果您想在编辑器中的文本发生更改时实现某些内容,则可以使用,onText

我需要一个监听器,每次编辑文本中的选择更改时都会调用它。 我在谷歌上搜索了一下,但找不到任何对API级别7有用的东西。
我正在编写一个文本编辑器,希望每次用户选择粗体/斜体/下划线文本时,粗体/斜体/下划线按钮都处于选中状态。

更好的方法是扩展编辑文本,然后根据您希望如何管理更改的文本,您可以重写这两种方法中的一种,以确定您的自定义行为

  • 如果希望更改选择,则可以使用
    onSelectionChanged()
    方法并在那里实现代码

  • 如果您想在编辑器中的文本发生更改时实现某些内容,则可以使用,
    onTextChanged()


  • 更好的方法是扩展EditText,然后根据您希望如何管理更改的文本,您可以覆盖这两种方法中的一种来实现自定义行为

  • 如果希望更改选择,则可以使用
    onSelectionChanged()
    方法并在那里实现代码

  • 如果您想在编辑器中的文本发生更改时实现某些内容,则可以使用,
    onTextChanged()


  • 这是一个很老的问题,但有些人可能仍然需要这个,所以我的解决方案是:由于文本选择是通过长按文本来完成的,所以我只使用了以下方法:

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

    这允许在文本选择上进行自定义行为,并且不会阻止用户复制/粘贴。

    这是一个很老的问题,但可能有人仍然需要它,因此我的解决方案是:由于文本选择是通过长按文本来完成的,所以我只使用了以下方法:

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

    这允许对文本选择进行自定义操作,但不会阻止用户复制/粘贴。

    您尝试过吗?根据TextWatcher的描述,“将TextWatcher添加到每当此TextView的文本更改时调用其方法的人的列表中。”我需要的是一个监听器,它在文本上的选择更改时发出通知,而不是文本。顺便说一句,我刚试过,当选择发生变化时,没有调用TextWatcher的侦听器。你是否扩展EditText使其成为编辑器?还没有。我希望有这样的倾听者存在。我想我应该重写EditText的setSelection方法或类似的方法。在这种情况下,可以重写一个ContextChanged(CharSequence text、int start、int lengthBefore、int lengthAfter)方法。将检查我是否找到有关文本更改侦听器的更多信息。您尝试过这个吗?根据TextWatcher的描述,“将TextWatcher添加到每当此TextView的文本更改时调用其方法的人的列表中。”我需要的是一个监听器,它在文本上的选择更改时发出通知,而不是文本。顺便说一句,我刚试过,当选择发生变化时,没有调用TextWatcher的侦听器。你是否扩展EditText使其成为编辑器?还没有。我希望有这样的倾听者存在。我想我应该重写EditText的setSelection方法或类似的方法。在这种情况下,可以重写一个ContextChanged(CharSequence text、int start、int lengthBefore、int lengthAfter)方法。将检查是否找到有关文本更改侦听器的更多信息。如果仍然希望EditText执行其longPress处理程序并选择文本,请确保在此处返回false,如果返回true,则只会得到onLongClick()已执行。如果仍希望EditText执行其longPress处理程序并选择文本,请确保在此处返回false;如果返回true,则得到的结果是onLongClick()已执行。