Отключить мигающий курсор EditText



кто-нибудь знает, как отключить мигающий курсор в EditText посмотреть?

592   4  

4 ответов:

вы можете использовать либо атрибут xml android:cursorVisible="false" или функция java setCursorVisible(false).

идеальное решение, которое идет дальше к цели

цель: отключить мигающий курсор, когда EditText - это не в фокусе, и включить мигающий курсор, когда EditText находится в фокусе. Ниже также открывается клавиатура, когда EditText щелкается и скрывает его при нажатии кнопки Готово на клавиатуре.

1) Установите в вашем xml под вашим EditText:

android:cursorVisible="false"

2) установить onClickListener:

iEditText.setOnClickListener(editTextClickListener);

OnClickListener editTextClickListener = new OnClickListener() 

{

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

    }
};

3) тогда onCreate, захват события, когда это сделано нажата с помощью OnEditorActionListener на EditText, а потом 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;
            }
        });

вы можете использовать следующий код для включения и отключения редактирования текстового курсора программно.

чтобы включить курсор

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

отключить курсор

    editText.setCursorVisible(false);

С помощью XML включить отключить курсор

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

чтобы сделать edit_text выбираемым (копировать / вырезать / вставить / выбрать / выбрать все)

   editText.setTextIsSelectable(true);

чтобы сосредоточиться на сенсорном режиме, напишите следующее строки в XML

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

программно

  editText.requestFocusFromTouch();

чтобы очистить фокус на сенсорном режиме

  editText.clearFocus()

в моем случае я хотел включить / отключить курсор, когда редактирование сфокусировано.

в вашей деятельности:

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

Comments

    Ничего не найдено.