Diferencia entre adjustResize y adjustPan en Android?
Traté de 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,vuelve a dimensionar los componentes de la interfaz de usuario y al mismo tiempo adjustPan me dio la misma salida. Quiero saber la diferencia entre ellos y cuándo usar cada componente? ¿Cuál (adjustPan o adjustResize) es bueno para cambiar el tamaño de 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>
4 answers
Desde el Enlace del Sitio para Desarrolladores de Android
"adjustResize"
La ventana principal de la actividad siempre se redimensiona para hacer espacio para el soft teclado en pantalla.
"adjustPan"
La ventana principal de la actividad no se redimensiona para hacer espacio para el soft teclado. Más bien, el contenido de la ventana se desplaza automáticamente para que el enfoque actual nunca se oscurezca por el teclado y los usuarios siempre se puede ver lo que están escribiendo. Esto es generalmente menos deseable que redimensionar, porque el usuario puede necesitar cerrar el teclado para llegar e interactuar con las partes ocultas de la ventana.
De acuerdo con su comentario, use lo siguiente en su manifiesto de actividad
<activity android:windowSoftInputMode="adjustResize"> </activity>
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-12-27 07:13:15
AdjustResize = redimensionar el contenido de la página
AdjustPan = mover el contenido de la página sin redimensionar el contenido de la página
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-10-08 03:06:53
Como doc dice también tenga en cuenta la combinación de valores correcta:
La configuración debe ser uno de los valores enumerados en la siguiente tabla, o una combinación de un "estado"... ajuste "valor más uno"..." valor. Establecer múltiples valores en cualquiera de los grupos-estado "múltiple"..." valor, por ejemplo - tiene resultados indefinidos. Los valores individuales están separados por una barra vertical (|). Por ejemplo:
<activity android:windowSoftInputMode="stateVisible|adjustResize" . . . >
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-11-19 16:26:56
Puedes usar android:windowSoftInputMode="stateAlwaysHidden|adjustResize"
en AndroidManifest.xml para tu actividad actual,
y use android:fitsSystemWindows="true"
en estilos o RootLayout.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-10-08 02:56:13