Creación de diseño de inicio de sesión como en la aplicación de facebook para Android

Quiero hacer una aplicación con una actividad de inicio de sesión / diseño similar a lo que tiene la aplicación de Facebook. Lo que quiero decir es cuando el campo de texto está enfocado teclado suave empuja toda la vista hacia arriba, pero no aplastar un logotipo. He intentado android:windowSoftInputMode="adjustPan/adjustResize" pero no es lo que estaba tratando de lograr.

He encontrado esta pregunta en SO tal vez se hará las cosas más claras, pero no tiene solución al problema.

También he intentado varios tipos de diseños, pero el teclado suave sólo empuja el <EditText> centrado. Por favor guíame.

ACTUALIZAR:

Introduzca aquí la descripción de la imagenIntroduzca aquí la descripción de la imagen

Introduzca aquí la descripción de la imagenIntroduzca aquí la descripción de la imagen

  <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" android:background="#DDDDDD"> <RelativeLayout android:height="0dp" android:layout_weight="1" android:layout_height="0dp" android:layout_width="fill_parent" android:background="#ff0000"> <ImageView android:layout_centerVertical="true" android:layout_height="fill_parent" android:layout_width="fill_parent"></ImageView> </RelativeLayout> <RelativeLayout android:height="0dp" android:layout_height="0dp" android:layout_weight="1" android:layout_width="fill_parent" android:background="#00ff00"> </RelativeLayout> <RelativeLayout android:layout_width="fill_parent" android:layout_height="0dp" android:layout_weight="1" android:background="#0000ff" android:height="0dp" > <Button android:layout_width="fill_parent" android:layout_height="40dp" android:layout_alignParentBottom="true" android:layout_centerHorizontal="true" android:text="Log in" /> <EditText android:layout_width="fill_parent" android:layout_height="40dp" android:layout_centerHorizontal="true" android:layout_centerVertical="true" android:padding="4dp" android:hint="password" android:inputType="textPassword" > </EditText> <EditText android:id="@+id/editText1" android:hint="login" android:padding="4dp" android:layout_width="fill_parent" android:layout_height="40dp" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" ></EditText> </RelativeLayout> </LinearLayout> 

UPDATE solución de trabajo No puedo pegar aquí todo el archivo xml, pero la estructura debe ser suficiente. Basado en la respuesta de Gabe Sechan.

 Layout{ Layout top weight 1 Layout mid weight 1 Layout bot weight 1 } 

Los diseños de los hijos se han establecido en:

 android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" // should be changed accordingly to your layout design. 

Y aquí hay un código Java para la actividad (teclado arriba / abajo):

 View top, mid, bot; final View activityRootView = findViewById(R.id.loginLayout); activityRootView.getViewTreeObserver().addOnGlobalLayoutListener( new OnGlobalLayoutListener() { @Override public void onGlobalLayout() { int heightDiff = activityRootView.getRootView() .getHeight() - activityRootView.getHeight(); if (heightDiff > 100) { //keyboard up mid.setVisibility(View.INVISIBLE); top.setLayoutParams(new TableLayout.LayoutParams( LayoutParams.MATCH_PARENT, 0, 0f)); bot.setLayoutParams(new TableLayout.LayoutParams( LayoutParams.MATCH_PARENT, 0, 1f)); } else {// keyboard down // v.setVisibility(View.VISIBLE); mid.setVisibility(View.VISIBLE); top.setLayoutParams(new TableLayout.LayoutParams( LayoutParams.MATCH_PARENT, 0, 2f)); bot.setLayoutParams(new TableLayout.LayoutParams( LayoutParams.MATCH_PARENT, 0, 3f)); } } }); 

En el teclado hacia arriba tienes que cambiar los pesos de accourding a teclado hasta el diseño y en el teclado abajo cambiar de nuevo a la configuración predeterminada (que has establecido a través de xml / java). He probado el código en 2.3.xy más. Y no te olvides de usar android:inputType="textFilter" para el login & password EditText para eliminar sugerencias de entrada y guardar algunos píxeles. En su manifiesto para la actividad android:windowSoftInputMode="adjustResize|stateHidden" . stateHidden se utiliza para que el teclado no se stateHidden cuando se carga la actividad. Espero eso ayude. Buena suerte.

Lo están haciendo con diseños relativos, adjustResize y android: layout_centerVertical. Básicamente, tienen una disposición lineal para su disposición principal, con 3 disposiciones igualmente ponderadas relativas dentro de ella. Cada uno se establece en 0dp de altura, por lo que ocupan tercios iguales de la pantalla. La parte superior RelativeLayout contiene el logotipo, centrado verticalmente. El centro contiene los campos de entrada y el botón, centrados verticalmente uno encima del otro. El fondo sostiene el texto del copyright, alineado a la parte inferior. El resultado final es que cuando el teclado aparece, los 3 diseños relativos se redimensionan para tomar 1/3 de la nueva pantalla. Entonces sus elementos se centran en la nueva pantalla.

Recuerda que necesitas el modo de ventana adjustResize para obtener esto, si usas pan solo se moverá hacia arriba y el logotipo se desplazará fuera del centro.

En Eclipse, vaya a Archivo | Nuevo | Otro y en el Asistente que sigue, seleccione Actividad de Android, luego en la siguiente página, seleccione LoginActivity en la lista de actividades. Esto tiene el diseño exacto que está hablando, y se puede utilizar como un marco. Utiliza un ScrollView para lograr el efecto que estás buscando.

  • ¿Es posible intercambiar diseños XML durante el tiempo de ejecución en Android?
  • Los niños en el diseño lineal con igual relleno
  • ¿Creación de un diseño de chat?
  • Cómo hacer que RatingBar muestre cinco estrellas
  • Java.lang.UnsupportedOperationException: No se puede convertir a dimension: type = 0x12
  • Cómo poner 9 botones en 3 filas en el diseño de Android xml?
  • Android Ver alinear abajo (de forma programática) sin XML
  • Búsqueda de diseños por ID
  • Padding no funciona en Android
  • ¿Debo usar Java o XML para diseños de Android?
  • Configuración de Android Ancho de botón de la mitad de la pantalla
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.