Saltar al contenido

La mejor forma de ocultar el teclado en Android

octubre 21, 2021
apple touch icon@2

Me gustaría saber la mejor manera de ocultar el teclado después de ingresar el texto en EditText.

1) setonfocuschangelistener: ¿Este oyente se dispara solo cuando se presiona el botón Listo o cuando el enfoque cambia de un EditText a otro? Cuando usé este método, no pude ocultar el teclado.

2) setOnTouchListener: Cuando usé esto, pude ocultar el teclado, pero dudo que haya un problema con esto. En este caso, agrego el oyente táctil a la raíz LinearLayout. El siguiente código que había usado:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.login);

    txtUserName = (EditText)findViewById(R.id.txtUserName);
    btnLogin = (Button)findViewById(R.id.btnLogin);
    layoutView = (LinearLayout)findViewById(R.id.li);

    layoutView.setOnTouchListener(new OnTouchListener() {
        public boolean onTouch(View v, MotionEvent event) {
            InputMethodManager inputManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
            inputManager.hideSoftInputFromWindow(txtUserName
                    .getWindowToken(), 0);
            return true;
        }
    });
}

Dentro del LinearLayout principal, estoy usando otros dos LinearLayouts. El problema al que me enfrenté con el código anterior es que, en algunos puntos, cuando presioné, el teclado no se oculta. Mi duda es que estoy agregando un oyente táctil solo con el diseño raíz, no dando un oyente táctil con otros diseños internos u otros controles (TextView). Cuando toco otros controles o algunos puntos alrededor de TextView (es decir, diseños internos), el teclado no se oculta.

Eso significa que necesito agregar touchListener a todos los diseños o controles dentro del diseño raíz? ¿Cómo se puede manejar mejor esta situación?

close