如何确定Android [EditText]中文本何时被选中

3

能否确定文本何时被选中,何时未被选中?

我在谷歌上搜索并找到了onSelectionChanged()方法或setOnLongClickListener()来确定用户是否longClick编辑框以进行选择,但是在这两种情况下都无法帮助我确定用户是否没有选择任何文本(我可以将按钮设置为不可见)...

3个回答

7
你可以使用

标签


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;
          }
        });


那就可以了。


6
int startSelection=et.getSelectionStart();
int endSelection=et.getSelectionEnd();  
< p> getSelectionStart() 方法返回选择锚点/光标的起始位置,如果用户没有选择任何文本,则返回-1。您可以尝试使用此方法。


每次我怎么测试它?我应该把它放在一个循环里吗?抱歉,我对Android编程还是新手:D :/ - undefined
这取决于你想要何时检查。当你获得/失去焦点等情况下你可以进行检查。 - undefined

3

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

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

因此:

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

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接