如何判断文本何时被选中[Android [EditText]]

Posted

技术标签:

【中文标题】如何判断文本何时被选中[Android [EditText]]【英文标题】:How to determine when text is selected [Android [EditText]] 【发布时间】:2015-02-13 21:18:47 【问题描述】:

是否可以确定何时选择文本,何时不选择?

我在谷歌上搜索,我 find onSelectionChanged() 方法或 setOnLongClickListener() 用于确定用户 longClicks 何时编辑文本,因此当他进行选择时,但在这两种情况下它都无法帮助我确定用户何时不是选择任何文本(我可以设置按钮不可见)...

【问题讨论】:

【参考方案1】:

你可以使用

yourEditText.setOnTouchListener(new View.OnTouchListener() 
          @Override
          public boolean onTouch(View v, MotionEvent event) 

            if (MotionEvent.ACTION_UP == event.getAction()) 

              if (yourEditText.hasSelection()) 
                // if true, the text in the EditText is selected
              

            return false;
          
        );

应该这样做。

【讨论】:

【参考方案2】:
int startSelection=et.getSelectionStart();
int endSelection=et.getSelectionEnd();  

getSelectionStart() 方法将返回选择锚点/光标的开始,如果用户没有选择任何文本,则返回 -1。你可以试试这个。

【讨论】:

如何每次都进行测试?我应该把它放在某个循环中?对不起,但我是 android 编程新手 :D :/ 这取决于您何时要检查。您可以在获得/失去焦点等时检查它。【参考方案3】:

您可以检查 editText.getSelectionStart() 和 editText.getSelectionEnd() 并检查这些值是否为:

相同:用户没有选择文本 不同:用户选择的文本

所以:

int startSelection= textAbove.getSelectionStart();
int endSelection= textAbove.getSelectionEnd();

if (startSelection != endSelection) 
    ... DO SOMETHING ...

【讨论】:

以上是关于如何判断文本何时被选中[Android [EditText]]的主要内容,如果未能解决你的问题,请参考以下文章

如果复选框被选中或输入:文本有值

android的edittext怎么设置不默认被选中

如何防止在chrome中focus()上的文本选择

Android中判断app何时启动和关闭的技术研究

Android中判断app何时启动和关闭的技术研究

Android中判断app何时启动和关闭的技术研究