Android Editar texto cubierto por el teclado en el segundo toque

Así que tengo un EditText que no se cubre por el teclado la primera vez. Entonces cuando usted cierra el teclado y golpea ligeramente el edittext otra vez cubre el edittext.

He pasado horas investigando este tema y he llegado a la conclusión de que tiene algo que ver con estas dos propiedades del texto de edición.

android:inputType="number" android:gravity="center" 

Si elimino uno de esos el adjustPan (como puesto en mi manifiesto) funciona todo el tiempo como se prometió. Parece ser un error de Android. Pero necesito ambas líneas en mi texto de edición. ¿Cuál es la mejor manera de resolver este problema?

Aquí hay una versión ligeramente condensada de xml:

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/colorPrimary" android:descendantFocusability="beforeDescendants" android:focusableInTouchMode="true"> <LinearLayout android:id="@+id/buttons_layout" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:orientation="horizontal" android:weightSum="5"> <android.support.v7.widget.AppCompatButton android:id="@+id/generate_button" android:layout_width="match_parent" android:layout_height="@dimen/button_height" android:layout_marginBottom="@dimen/button_margin" android:layout_marginEnd="0dp" android:layout_marginLeft="@dimen/button_margin" android:layout_marginRight="0dp" android:layout_marginStart="@dimen/button_margin" android:layout_marginTop="@dimen/button_margin" android:layout_weight="1" android:background="@color/buttonColor" android:elevation="@dimen/button_elevation" android:foreground="?attr/selectableItemBackground" android:text="@string/generate" android:textColor="@color/colorPrimary" android:textSize="@dimen/generate_button_title_size" android:textStyle="bold" /> <android.support.v7.widget.AppCompatImageButton android:id="@+id/copy_button" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_margin="@dimen/button_margin" android:layout_weight="4" android:adjustViewBounds="true" android:background="@color/buttonColor" android:elevation="@dimen/button_elevation" android:foreground="?attr/selectableItemBackground" android:padding="@dimen/button_margin" android:scaleType="fitCenter" android:src="@drawable/ic_copy" android:tint="@color/colorPrimary" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:layout_above="@id/buttons_layout" android:orientation="vertical" android:weightSum="10"> <GridLayout android:id="@+id/grid_layout" android:layout_width="match_parent" android:layout_height="0dp" android:layout_gravity="center" android:layout_weight="6" android:animateLayoutChanges="true"> </GridLayout> <TextView android:id="@+id/total_text_view" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="2" android:gravity="center" android:text="11" android:textSize="@dimen/toolbar_title_size" android:textStyle="bold" /> <android.support.design.widget.TextInputLayout android:layout_width="match_parent" android:layout_height="0dp" android:layout_gravity="center" android:layout_weight="2" android:textColorHint="@color/textColorHint"> <EditText android:id="@+id/num_rolls_edit_text" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center" android:hint="@string/number_of_rolls" android:inputType="number" android:maxLength="@integer/edit_text_max_length" android:maxLines="1" android:text="4" android:textColor="@color/textColor" android:textSize="@dimen/edit_text_text_size"/> </android.support.design.widget.TextInputLayout> </LinearLayout> 

Esto es lo que debería parecer cada vez … Introduzca aquí la descripción de la imagen

Aquí está lo que parece en el segundo toque actualmente (teclado cubre edittext) … Introduzca aquí la descripción de la imagen

EDIT: He descubierto que el teclado funciona bien cuando se utiliza Android 7.0. No creo que funcione en nada por debajo de eso. ¿Fue esto un error que fue arreglado recientemente o algo así?

Además, he incluido android: windowSoftInputMode = "adjustPan | stateHidden" en mi aplicación y parte de la actividad de mi manifiesto, pero que no parece arreglarlo.

Intente cambiar adjustPan a adjustResize para la configuración de la actividad en el archivo de manifiesto, tal y como sugirió el documento .

Esto (adjustPan) es generalmente menos deseable que el cambio de tamaño, porque el usuario puede necesitar cerrar el teclado suave para llegar e interactuar con partes oscurecidas de la ventana.

EDITAR

Si no desea que las vistas se aplasten / ajusten cuando se abre el teclado, agregue un ScrollView a su raíz RelativeLayout . De modo que cuando adjustResize desplazará la vista en consecuencia en lugar de "aplastarlos".

¡Espero que esto ayude!

Agregue esto en su manifiesto para la actividad. Funciona bien

  <activity android:name=".Views.UI.MainActivity" android:windowSoftInputMode="stateHidden|adjustResize"> 

En su primera captura de pantalla el texto "Dice" es cutoff, en el segundo, donde el editText está cubierto, "Dice" se muestra, considere quitar el Title editText "Dice"?

También veo que usted ha utilizado scrollView y dicho usted puede utilizar AlignParentBottom , podría usted substituir eso por layoutBelow ?

Pienso que usted no utilizó la visión de la voluta dentro del XML si usted lo hizo que usted necesita hacer un cierto código android mainfeast. <activity android:name=".activity.ActivityProductDetail" android:windowSoftInputMode="stateAlwaysHidden|adjustResize" />

RelativeLayout con alignParentBottom y varias vistas siempre es problemático, especialmente con el teclado. Yo sugeriría usar scrollview y agregar vistas dentro de LinearLayout , donde los botones estarán al final, pero no seguramente en la parte inferior de la vista.

Entonces ni siquiera necesita usar adjustPan . Algo como:

 <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical"> <!-- grid view + textview + textEdit + your buttons at the end --> </LinearLayout> 

Usted podría agregar su disposición en ScrollView y escuchar la devolución de llamada de onGloablLayout() . Si el rootview y la diferencia de altura de su vista son> 100 píxeles probablemente sea el teclado y usted podría desplazarse a su EditText por lo que no está bloqueado por el teclado.

 final View layout = findViewById(R.id.layoutparentID); layout.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { @Override public void onGlobalLayout() { int heightDiff = layout.getRootView().getHeight() - layout.getHeight(); if (heightDiff > 100) { // if more than 100 pixels, its probably a keyboard... final Runnable r = new Runnable() { public void run() { scrollView.smoothScrollTo(0, editText.getBottom()); } }; activityRootView.getHandler().postDelayed(r, 100); } } }); 

Compruebe este código, ocultando el teclado virtual

  try { View view = this.getCurrentFocus(); if (view != null) { InputMethodManager inputManager = (InputMethodManager) this.getSystemService(Context.INPUT_METHOD_SERVICE); inputManager.hideSoftInputFromWindow(view.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS); } } catch (Exception e) { e.printStackTrace(); } 
  • Teclado numérico suave en Android
  • Superposición del sistema android 4.0
  • De Google Chrome no funciona en Chrome en Android
  • Cierre el teclado al desplazarse en la lista desplegable de autocompletetextview en Android
  • Detectar si las teclas están disponibles en el teclado en pantalla del dispositivo móvil
  • Cómo ocultar el teclado virtual
  • ¿Cómo cambiar el color de fondo de la tecla para el teclado suave android?
  • Cómo ver de forma programática teclado de diferentes idiomas en la aplicación android?
  • Agregar imagen a la aplicación de mensajería en Android
  • Simulando exactamente la pulsación de teclas de un usuario en Javascript
  • Teclado de red Emacs
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.