android android-softkeyboard android-4.4-kitkat

Teclado que oculta EditText cuando android: windowTranslucentStatus=true



android-softkeyboard android-4.4-kitkat (6)

Agregue lo siguiente también

<item name="android:fitsSystemWindows">true</item>

Estamos aplicando el nuevo tema de Android KitKat translúcido en nuestras aplicaciones, y estamos teniendo un problema extraño cuando aparece el teclado. Si no usamos el nuevo atributo android:windowTranslucentStatus , todo funciona como siempre: la pantalla android:windowTranslucentStatus tamaño y todo permanece visible. Pero cuando usamos android:windowTranslucentStatus , la pantalla no se redimensiona y nuestro EditText queda oculto por el teclado.

Una muestra del problema:

La única diferencia entre las pantallas está en el atributo en el estilo:

Primera pantalla: <item name="android:windowTranslucentStatus">false</item>

Segunda pantalla: <item name="android:windowTranslucentStatus">true</item>

Creemos que es un error de la versión de Kitkat, pero queremos que se dé cuenta de esto. Nos estamos poniendo un poco enojados. Por supuesto, si alguien tiene una solución, será increíble.

EDITAR: Acabo de agregar este problema al rastreador de problemas de Android. Probablemente le interese protagonizar el problema: https://issuetracker.google.com/issues/36986276


Esta no es una solución perfecta, pero una solución que encontré fue configurar android:windowSoftInputMode="adjustPan" en AndroidManifest.xml .

Tenga en cuenta que esto desplazará toda la ventana fuera del camino del teclado, en lugar de cambiar su tamaño.

Más información here (busque windowSoftInputMode ).


También me encontré con este problema muy molesto. Pero eventualmente conseguí esto funcionando:

<style name="Theme.MyApp"> <item name="android:windowTranslucentStatus">true</item> </style>

En lugar de establecer fitSystemWindows = "true" en el tema, lo configuro en la vista raíz de mi diseño.

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:fitsSystemWindows="true" android:layout_width="match_parent" android:layout_height="match_parent"> <EditText android:layout_width="wrap_content" android:layout_height="wrap_content" /> </FrameLayout>

También uso el gran SystemBarTintManager en mi actividad:

new SystemBarTintManager(this).setStatusBarTintEnabled(true);

Esto parece funcionar bien, pero ciertamente parece bastante voluble. Espero que ayude a alguien de todos modos!


Una solución alternativa sería:

Agregue un Touch o Focus o ClickListener y suba el layout de EditText hasta la mitad de la pantalla. Sin embargo, esta no es la manera en que debería funcionar, así que mantén los dedos cruzados y espera que Google lo solucione.

EditText e = new EditText(this); e.setOnFocusChangeListener(new OnFocusChangeListener() { @Override public void onFocusChange(View v, boolean hasFocus) { if(hasFocus) v.animate().x(screenHeight/2f).start(); else v.animate().x(screenHeight).start(); } });

Simplemente ajuste v a su disposición de espera y asegúrese de que las posiciones en las que se mueve se vean bien.


poner esto debajo de las líneas después de oncreate en tu actividad

int currentapiVersion = android.os.Build.VERSION.SDK_INT; if (currentapiVersion >= android.os.Build.VERSION_CODES.LOLLIPOP) { Window window = this.getWindow(); window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); window.setStatusBarColor(mCategoryColors.getColorStatusBar()); }

Trabaja para mi :)