Wyłącz migający kursor EditText

Czy ktoś wie jak wyłączyć migający kursor w widoku EditText?

Author: Aditya Vyas-Lakhan, 2011-04-07

4 answers

Możesz użyć atrybutu xml android:cursorVisible="false" lub funkcji java setCursorVisible(false).

 305
Author: Vic,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-07-25 15:12:23

Idealne rozwiązanie, które idzie dalej do celu

Cel: wyłączenie migającego kursora, gdy {[3] } nie jest ustawiona ostrość, i włączenie migającego kursora, gdy EditText jest ustawiona ostrość. Poniżej również otwiera klawiaturę po kliknięciu EditText i ukrywa ją po naciśnięciu przycisku Gotowe na klawiaturze.

1) Ustaw w swoim xml pod swoim EditText:

android:cursorVisible="false"

2) Set onClickListener:

iEditText.setOnClickListener(editTextClickListener);

OnClickListener editTextClickListener = new OnClickListener() 

{

    public void onClick(View v) 
    {
         if (v.getId() == iEditText.getId()) 
        {
            iEditText.setCursorVisible(true);
        }

    }
};

3) Następnie onCreate, uchwyć zdarzenie po naciśnięciu przycisku done używając OnEditorActionListener do swojego EditText, a następnie setCursorVisible(false).

//onCreate...

iEditText.setOnEditorActionListener(new OnEditorActionListener() {

            @Override
            public boolean onEditorAction(TextView v, int actionId,
                    KeyEvent event) {
                    iEditText.setCursorVisible(false);
                if (event != null&& (event.getKeyCode() == KeyEvent.KEYCODE_ENTER)) {
                    InputMethodManager in = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
                    in.hideSoftInputFromWindow(iEditText.getApplicationWindowToken(),InputMethodManager.HIDE_NOT_ALWAYS);
                }
                return false;
            }
        });
 26
Author: coolcool1994,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-07-18 09:17:04

Możesz użyć poniższego kodu, aby programowo włączyć i wyłączyć edytowanie kursora tekstu.

Aby włączyć kursor

    editText.requestFocus();
    editText.setCursorVisible(true);

Aby wyłączyć kursor

    editText.setCursorVisible(false);

Using XML enable disable cursor

   android:cursorVisible="false/true"
   android:focusable="false/true"

Aby wybrać edit_text (Kopiuj/wytnij / wklej/wybierz / Wybierz wszystko)

   editText.setTextIsSelectable(true);

Aby skupić się na trybie dotykowym napisz następujące linie w XML

  android:focusableInTouchMode="true"
  android:clickable="true"
  android:focusable="true" 

Programowo

  editText.requestFocusFromTouch();

Aby wyczyścić ostrość w trybie dotykowym

  editText.clearFocus()
 3
Author: Sagar Hudge,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-11-15 12:23:40

W moim przypadku chciałem włączyć / wyłączyć kursor, gdy edycja jest skupiona.

W Twojej aktywności:

@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
    if (ev.getAction() == MotionEvent.ACTION_DOWN) {
        View v = getCurrentFocus();
        if (v instanceof EditText) {
            EditText edit = ((EditText) v);
            Rect outR = new Rect();
            edit.getGlobalVisibleRect(outR);
            Boolean isKeyboardOpen = !outR.contains((int)ev.getRawX(), (int)ev.getRawY());
            System.out.print("Is Keyboard? " + isKeyboardOpen);
            if (isKeyboardOpen) {
                System.out.print("Entro al IF");
                edit.clearFocus();
                InputMethodManager imm = (InputMethodManager) this.getSystemService(Context.INPUT_METHOD_SERVICE);
                imm.hideSoftInputFromWindow(edit.getWindowToken(), 0);
            }

            edit.setCursorVisible(!isKeyboardOpen);

        }
    }
    return super.dispatchTouchEvent(ev);
}
 1
Author: MontiRabbit,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-08-29 18:13:29