¿Alguien sabe cómo deshabilitar el cursor parpadeante en una EditText
vista?
¿Alguien sabe cómo deshabilitar el cursor parpadeante en una EditText
vista?
Respuestas:
Puede usar el atributo xml android:cursorVisible="false"
o la función java setCursorVisible(false)
.
Solución perfecta que va más allá de la meta.
Objetivo: deshabilitar el cursor parpadeante cuando EditText
no está enfocado, y habilitar el cursor parpadeante cuando EditText
está enfocado. A continuación también se abre el teclado cuando EditText
se hace clic y lo oculta cuando presiona Listo en el teclado.
1) Establezca en su xml debajo de su EditText
:
android:cursorVisible="false"
2) Establecer onClickListener:
iEditText.setOnClickListener(editTextClickListener);
OnClickListener editTextClickListener = new OnClickListener()
{
public void onClick(View v)
{
if (v.getId() == iEditText.getId())
{
iEditText.setCursorVisible(true);
}
}
};
3) A continuación onCreate
, capturar el evento cuando se hace que se pulsa el uso OnEditorActionListener
a tu EditText
, y luego 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;
}
});
Puede usar el siguiente código para habilitar y deshabilitar la edición del cursor de texto mediante programación.
Para habilitar el cursor
editText.requestFocus();
editText.setCursorVisible(true);
Para deshabilitar el cursor
editText.setCursorVisible(false);
El uso de XML permite desactivar cursor
android:cursorVisible="false/true"
android:focusable="false/true"
Para hacer que edit_text sea Seleccionable para (copiar / cortar / pegar / seleccionar / seleccionar todo)
editText.setTextIsSelectable(true);
Para centrarse en el modo táctil, escriba las siguientes líneas en XML
android:focusableInTouchMode="true"
android:clickable="true"
android:focusable="true"
programáticamente
editText.requestFocusFromTouch();
Para borrar el enfoque en el modo táctil
editText.clearFocus()
El problema con la configuración de la visibilidad del cursor en verdadero y falso puede ser un problema ya que elimina el cursor hasta que lo vuelva a configurar y al mismo tiempo el campo sea editable, lo que no es una buena experiencia para el usuario.
así que en lugar de usar
setCursorVisible(false)
solo hazlo así
editText2.setFocusableInTouchMode(false)
editText2.clearFocus()
editText2.setFocusableInTouchMode(true)
El código anterior elimina el foco que a su vez elimina el cursor. Y lo habilita nuevamente para que pueda tocarlo nuevamente y poder editarlo. Al igual que la experiencia de usuario normal.
En mi caso, quería habilitar / deshabilitar el cursor cuando la edición está enfocada.
En tu actividad:
@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);
}
edit.setCursorVisible(!isKeyboardOpen);
estar edit.setCursorVisible(isKeyboardOpen);
para que el cursor sea visible cuando el teclado esté presente.
simplemente agregue esta línea en su diseño principal
<?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>
Si quieres ignorarlo Edittext
desde el inicio de la actividad, android:focusable
y android:focusableInTouchMode
te ayudará inshallah.
<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">
Esto
LinearLayout
con tuEdittext
.
Cambie el foco a otra vista (por ejemplo, cualquier vista de texto o Linearlayout en el XML) usando
android:focusableInTouchMode="true"
android:focusable="true"
configura addTextChangedListener para editar el texto en Activity.
y luego en el texto posterior cambiado de Edittext put edittext.clearFocus()
;
Esto habilitará el cursor cuando el teclado esté abierto y deshabilitará cuando el teclado esté cerrado.
En kotlin your_edittext.isCursorVisible = false
rootLayout.findFocus (). clearFocus ();