How to determine when text is selected [Android [E

2019-09-01 05:33发布

问题:

Is possible to determine when text is selected and when is not?

I was googling and I find onSelectionChanged() method or setOnLongClickListener() for determining when user longClicks the editText so when he made selection, but in both cases it can't help me with determining, when the user is not selecting any text (I could set button invisible)...

回答1:

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

The getSelectionStart() method will return the start of the selection anchor/cursor or -1 if the user has not selected any text. You could try using this.



回答2:

You can use

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


That should do it.



回答3:

You can check editText.getSelectionStart() and editText.getSelectionEnd() and check if those values are:

  • the same: user did not select text
  • different: the user selected text

So:

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

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