4 ответов:
вы можете использовать либо атрибут xml
android:cursorVisible="false"или функция javasetCursorVisible(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