Llevo todo el día haciendo pruebas, y funciona a medias, digo que, a medias, porque tengo dos actividades que extienden de Fragmet, cada una tiene varios EditText, si entro al Fragment 1, de la forma que lo he puesto ahora funciona, se muestra el teclado, y al quitarlo no se muestra el fondo, pero si después me voy y entro al Fragment 2, no funciona, se queda el fondo del teclado.
Si salgo de la aplicación, y ahora hago la prueba al revés, pasa lo mismo, si entro primero al Fragment 2, funciona bien, si luego me voy al Fragment 1, ya no funciona.
He probado también dejando el ScrollView primero y luego el RelativeLayout, y da igual donde lo ponga, tampoco funciona.
Si pongo el código que dices, no funciona el ScrollView, así que he tenido que poner los dos, este es el código que estoy probando ahora:
AndroidManifest:
android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"
android:windowSoftInputMode="stateHidden|adjustPan|adjustResize">
En el Fragment:
He tenido que agregar esto: AndroidBug5497Workaround.assistActivity(getActivity());
View.OnKeyListener keyListener = new View.OnKeyListener() {
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (event.getAction() == KeyEvent.KEYCODE_BACK) {
CerrarTeclado_2(binding.editTextTest);
}
return false;
}
};
@Override
public void onCreate(@Nullable @org.jetbrains.annotations.Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
AndroidBug5497Workaround.assistActivity(getActivity());
}
private void CerrarTeclado_2(EditText edit) {
InputMethodManager imm = (InputMethodManager) getContext().getSystemService(INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(edit.getApplicationWindowToken(), 0);
}
Y es más, he creado un proyecto nuevo, siguiendo este video: https://www.youtube.com/watch?v=FOibPikr0qc
Y ese proyecto muestra el teclado, y se esconde sin dejar el fondo, lo raro es que paso ese código a la otra aplicación, y ese código ya no funciona, no lo entiendo.