Esto funcionará sin necesidad de cambiar la actividad de usted. android:windowSoftInputMode
Paso 1: amplíe la clase EditText y anule estos dos:
@Override
public void setOnEditorActionListener(final OnEditorActionListener listener) {
mEditorListener = listener;
super.setOnEditorActionListener(listener);
}
@Override
public boolean onKeyPreIme(final int keyCode, final KeyEvent event) {
if (event.getKeyCode() == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_UP) {
if (mEditorListener != null) {
mEditorListener.onEditorAction(this, android.R.id.closeButton, event);
}
}
return super.onKeyPreIme(keyCode, event);
}
Paso 2: crea estos dos en tu actividad:
private void initKeyboard() {
final AppEditText editText = findViewById(R.id.some_id);
editText.setOnFocusChangeListener(new OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
setKeyboard(hasFocus);
}
});
editText.setOnEditorActionListener(new TextView.OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
if (event == null || event.getKeyCode() == KeyEvent.KEYCODE_BACK) {
editText.clearFocus();
}
return false;
}
});
}
public void setKeyboard(boolean isShowing) {
// do something
}
*** recuerde para poder clearFocus
trabajar, debe hacer que el padre o el primer hijo de la jerarquía principal se puedan enfocar.
setFocusableInTouchMode(true);
setFocusable(true);
trying to detect the virtual keyboard height in Android.
X
y laY
ubicación caen sobre / sobre el teclado =>SecurityException
=> decrementoY
e intente nuevamente => hasta que no se produzca ninguna excepción => ElY
valor actual es la altura del teclado. 2. si el teclado no está abierto => noSecurityException
.SecurityException
se lanza a => el teclado está abierto. De lo contrario, el teclado está cerrado.EditText
no para el otroEditText
. ¿Cómo puedo distinguir esto?