Кто-нибудь знает, как отключить мигающий курсор в представлении EditText
?
Отключить мигающий курсор EditText
Ответ 1
Вы можете использовать либо атрибут xml android:cursorVisible="false"
, либо java-функцию setCursorVisible(false)
.
Ответ 2
Идеальное решение, которое идет дальше цели
Цель: отключить мигающий курсор, если 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;
}
});
Ответ 3
Вы можете использовать следующий код для включения и отключения редактирования текстового курсора программным способом.
Чтобы включить курсор
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()
Ответ 4
В моем случае я хотел включить/отключить курсор, когда сфокусировано редактирование.
В вашей деятельности:
@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);
}
Ответ 5
Если вы хотите игнорировать Edittext
с самого начала действия, вам помогут android:focusable
и android:focusableInTouchMode
focusableInTouchMode.
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/linearLayout7" android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:focusable="true" android:focusableInTouchMode="true">
Это
LinearLayout
с вашимEdittext
.
Ответ 6
-
Смена фокуса на другое представление (например, любое текстовое представление или линейное наложение в XML), используя
android:focusableInTouchMode="true" android:focusable="true"
-
установите addTextChangedListener для редактирования текста в Activity.
-
и затем после обмена текстовым
edittext.clearFocus()
введитеedittext.clearFocus()
;
Это активирует курсор, когда клавиатура открыта, и отключается, когда клавиатура закрыта.
Ответ 7
просто добавьте эту строку в ваш родительский макет
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:focusable="true"
android:focusableInTouchMode="true">
<EditText
android:inputType="text"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
Ответ 8
Когда мы используем editText в переработчике, ни один код не работает должным образом!
Ответ 9
Проблема с установкой видимости курсора в true и false может быть проблемой, так как он удаляет курсор, пока вы снова не установите его снова, и в то же время поле является редактируемым, что не очень удобно для пользователя.
поэтому вместо использования
setCursorVisible(false)
просто сделай это так
editText2.setFocusableInTouchMode(false)
editText2.clearFocus()
editText2.setFocusableInTouchMode(true)
Приведенный выше код удаляет фокус, который в свою очередь удаляет курсор. И включает его снова, так что вы можете снова коснуться его и иметь возможность редактировать его. Так же, как обычный пользовательский опыт.