He intentado escribir un código que se utiliza para cambiar el tamaño de los componentes de la interfaz de usuario cuando aparece soft-keyboard. Cuando uso adjustResize, cambia el tamaño de los componentes de la interfaz de usuario y al mismo tiempo adjustPan me da el mismo resultado. Quiero saber la diferencia entre ellos y cuando usar cada componente. ¿Cuál (adjustPan o adjustResize) es bueno para redimensionar la interfaz de usuario?
Aquí está mi xml:
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true" >
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:orientation="vertical" >
<EditText
android:id="@+id/editText5"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="45dp"
android:ems="10"
android:inputType="textPersonName" />
<Button
android:id="@+id/button1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="40dp"
android:text="My Button" />
</LinearLayout>
</RelativeLayout>
</ScrollView>
y el archivo menifest:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.adjustscroll"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="17" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.example.adjustscroll.MainActivity"
android:label="@string/app_name"
android:windowSoftInputMode="adjustPan|adjustResize" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
Desde el enlace Android Developer Site
"adjustResize" > La actividad's ventana principal siempre se redimensiona para hacer espacio para el soft teclado en pantalla.
"adjustPan" > La ventana principal de la actividad'no se redimensiona para dejar espacio para el soft teclado. En lugar de ello, el contenido de la ventana se panoramiza automáticamente de modo que el foco actual nunca es oscurecido por el teclado y los usuarios siempre pueden ver lo que están escribiendo. Esto es generalmente menos deseable que cambiar el tamaño, porque el usuario puede necesitar cerrar el teclado blando para llegar e interactuar con las partes oscurecidas de la ventana.
de acuerdo a tu comentario, usa lo siguiente en tu manifiesto de actividad
<activity android:windowSoftInputMode="adjustResize"> </activity>
Como dice doc ten en cuenta también la combinación de valores correcta:
El ajuste debe ser uno de los valores que figuran en la siguiente tabla, o una combinación de un "estado..." valor más un "ajustar..." valor. Establecer múltiples valores en cualquiera de los grupos - múltiples "state..." valores, por ejemplo - tiene resultados indefinidos. Los valores individuales están separados por una barra vertical (|). Por ejemplo:
<activity android:windowSoftInputMode="stateVisible|adjustResize" . . . >