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 virtual. Cuando uso ajustarResizar, cambia el tamaño de los componentes de la interfaz de usuario y al mismo tiempo ajustarPan me dio la misma salida. ¿Quiero saber la diferencia entre ellos y cuándo usar cada componente? ¿Cuál (ajustePan o ajusteResize) 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 manifiesto:
<?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>
fuente
ajustarResizar = cambiar el tamaño del contenido de la página
ajustarPan = mover el contenido de la página sin cambiar el tamaño del contenido de la página
fuente
También estaba un poco confundido entre ajusteResizar y ajustarPan cuando era un principiante. Las definiciones dadas arriba son correctas.
AdjustResize: el contenido de la actividad principal se redimensiona para hacer espacio para la entrada de software es decir teclado
AdjustPan: En lugar de cambiar el tamaño de los contenidos generales de la ventana, que sólo filtra el contenido para que el usuario pueda ver siempre lo que es él tecleando
AdjustNothing: Como su nombre indica nada es redimensionada o panorámica. El teclado se abre ya que es independiente de si está ocultando el contenido o no.
He creado un ejemplo para una mejor comprensión.
A continuación se muestra mi archivo xml:
Aquí está la vista de diseño del ejemplo xml AdjustResize a continuación: AdjustPan Ejemplo a continuación: AdjustNothing Ejemplo a continuación:
fuente
Como dice el documento , también tenga en cuenta la combinación de valores correcta:
fuente
Puede usarlo
android:windowSoftInputMode="stateAlwaysHidden|adjustResize"
en AndroidManifest.xml para su actividad actual, y usarloandroid:fitsSystemWindows="true"
en estilos o rootLayout.fuente