windowsoftinputmode true softinputmode nohistory adjustnothing activity android android-softkeyboard

true - Diferencia entre adjustResize y adjustPan en Android?



show keyboard android (4)

Traté de escribir un código que se utiliza para cambiar el tamaño de los componentes de la interfaz de usuario cuando aparece el teclado suave . Cuando uso adjustResize, cambia el tamaño de los componentes de UI y al mismo tiempo adjustPan me dio el mismo resultado. 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 UI?

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 de 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>


Como dice el doc también tenga en cuenta la combinación correcta de valores:

La configuración debe ser uno de los valores listados en la siguiente tabla, o una combinación de un valor de "estado ..." más un valor de "ajuste ...". Establecer valores múltiples en cualquier grupo - múltiples valores de "estado ...", por ejemplo - tiene resultados indefinidos. Los valores individuales están separados por una barra vertical (|). Por ejemplo:

<activity android:windowSoftInputMode="stateVisible|adjustResize" . . . >


Desde el enlace del sitio para programadores de Android

"adjustResize"

La ventana principal de la actividad siempre se redimensiona para dejar espacio para el teclado virtual en la pantalla.

"adjustPan"

La ventana principal de la actividad no se redimensiona para dejar espacio para el teclado virtual. Más bien, el contenido de la ventana se panoramiza automáticamente para que el enfoque actual nunca se oculte por el teclado y los usuarios siempre pueden ver lo que escriben. En general, esto es menos conveniente que cambiar el tamaño, ya que el usuario puede necesitar cerrar el teclado virtual para acceder e interactuar con las partes oscuras de la ventana.

de acuerdo con tu comentario, usa siguiente en tu manifiesto de actividad

<activity android:windowSoftInputMode="adjustResize"> </activity>


Puedes usar android:windowSoftInputMode="stateAlwaysHidden|adjustResize" en AndroidManifest.xml para tu actividad actual, y usa android:fitsSystemWindows="true" en styles o rootLayout.


adjustResize = cambiar el tamaño del contenido de la página

adjustPan = mover el contenido de la página sin cambiar el tamaño del contenido de la página