style - propiedades edittext android
hacer que editText pierda el foco en la prensa trasera (4)
En mi actividad, tengo un campo editText. Cuando el usuario lo pulsa, editText se enfoca y aparece el teclado. Ahora, cuando el usuario presiona el botón Atrás del hardware en el teléfono, el teclado desaparece pero el cursor permanece en el Texto de edición, es decir, aún tiene el foco. ¿Es posible hacer que EditText pierda el enfoque cuando se presiona el botón Atrás? Intenté usar el siguiente código pero no funcionó:
@Override
public void onBackPressed() {
vibrator.vibrate(Constants.DEFAULT_VIBRATE_TIME);
myEditText.clearFocus();
super.onBackPressed();
}
Agregue una vista como la siguiente más arriba que su EditText:
<LinearLayout
android:layout_width="0px"
android:layout_height="0px"
android:focusable="true"
android:focusableInTouchMode="true" />
También para ocultar el teclado, agregue esto en onBackPressed ():
((InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE)).hideSoftInputFromWindow(myEditText.getWindowToken(), 0);
Esta puede ser una posible solución:
EditText et;
et.setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View view, int i, KeyEvent keyEvent) {
if(i == KeyEvent.KEYCODE_BACK) {
et.clearFocus();
return true;
}
else return false;
}
});
Puede hacer que una de sus Views
enfocable, por ejemplo, un ImageView
. Asegúrese de que sea enfocable en el modo táctil, utilizando setFocusableInTouchMode(true)
y onResume()
hacer que View
to requestFocus()
.
También puede crear una View
ficticia con 0 dimensiones y realizar los mismos pasos descritos anteriormente.
Espero que esto ayude.
Solo extiende EditText:
public class EditTextV2 extends EditText
{
public EditTextV2( Context context )
{
super( context );
}
public EditTextV2( Context context, AttributeSet attribute_set )
{
super( context, attribute_set );
}
public EditTextV2( Context context, AttributeSet attribute_set, int def_style_attribute )
{
super( context, attribute_set, def_style_attribute );
}
@Override
public boolean onKeyPreIme( int key_code, KeyEvent event )
{
if ( event.getKeyCode() == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_UP )
this.clearFocus();
return super.onKeyPreIme( key_code, event );
}
}
Y en el xml solo use <yourPackage.EditTextV2>
lugar de <EditText>
.
Nota: Es posible que deba agregar / eliminar constructores a esta clase dependiendo de la API mínima que esté soportando. Sugiero simplemente agregarlos todos y eliminar aquellos que super()
llamadas se subrayan en rojo.