validar style studio propiedades obtener example eventos edittext datos android android-edittext

android - style - editText no pierde enfoque



propiedades edittext android (4)

Cree un oyente onClick , posiblemente en su diseño XML para escuchar los clics en el fondo LinearLayout. Desde aquí, puede llamar a .clearFocus() en su EditText después de convertirlo en una variable de instancia de la actividad en la que está trabajando.

el editText no pierde enfoque en mi aplicación cuando hago clic fuera de él, tiene el borde naranja todo el tiempo y ese cursor de línea negra. Hice esto LinearLayout de acuerdo con este entorno. EditText: Stop EditText no gana foco al inicio de la actividad para que no se enfoque en el inicio de la aplicación.

este es mi código:

final EditText et = (EditText)findViewById(R.id.EditText01); final InputMethodManager imm = (InputMethodManager) getSystemService( INPUT_METHOD_SERVICE); et.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { imm.showSoftInput(et, InputMethodManager.SHOW_IMPLICIT); } }); et.setOnFocusChangeListener(new View.OnFocusChangeListener() { public void onFocusChange(View v, boolean hasfocus) { if(hasfocus) { imm.showSoftInput(et, InputMethodManager.SHOW_IMPLICIT); } else { imm.hideSoftInputFromWindow(et.getWindowToken(), 0); } } });

¡Pero parece que no está llamando a onFocusChange cuando hago clic en cualquier lugar fuera de editText!


Puede eliminar el foco de EditText, estableciendo el foco en otro campo llamando al método.

Supongamos que he puesto el foco en el botón Atrás al hacer clic en el botón hecho, luego llamo al método en el botón Atrás dentro del botón hecho haga clic en oyente.

Y tu problema está resuelto.

back.requestFocusFromTouch();


Es sencillo. Puede poner lo siguiente en LinearLayout o en cualquier otro:

android:focusableInTouchMode="true"


Anular Activity.dispatchTouchEvent() :

@Override public boolean dispatchTouchEvent(MotionEvent ev) { if (ev.getAction() == MotionEvent.ACTION_DOWN) { View view = getCurrentFocus(); if (view != null && view instanceof EditText) { Rect r = new Rect(); view.getGlobalVisibleRect(r); int rawX = (int)ev.getRawX(); int rawY = (int)ev.getRawY(); if (!r.contains(rawX, rawY)) { view.clearFocus(); } } } return super.dispatchTouchEvent(ev); }

De esa forma, cuando alguien hace clic en cualquier lugar, usted tiene el control, y está en un solo punto en el código.