J'ai essayé d'écrire un code qui est utilisé pour redimensionner les composants de l'interface utilisateur lorsque clavier virtuel apparaît. Lorsque j'utilise adjustResize,, il redimensionne les composants de l'interface utilisateur et, en même temps, adjustPan m'a donné le même résultat. Je veux savoir la différence entre eux et quand utiliser chaque composant? Lequel (adjustPan ou adjustResize) convient au redimensionnement de l'interface utilisateur?
Voici mon 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>
et le fichier 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>
Depuis le lien vers le site du développeur Android
"ajuster-redimensionner"
La fenêtre principale de l'activité est toujours redimensionnée pour laisser la place au clavier virtuel à l'écran.
"adjustPan"
La fenêtre principale de l'activité n'est pas redimensionnée pour laisser de la place au clavier virtuel. Au lieu de cela, le contenu de la fenêtre est automatiquement balayé afin que le focus actuel ne soit jamais masqué par le clavier et que les utilisateurs puissent toujours voir ce qu'ils tapent. Cela est généralement moins souhaitable que le redimensionnement, car l'utilisateur peut avoir besoin de fermer le clavier logiciel pour accéder aux parties obscurcies de la fenêtre et interagir avec elles.
en fonction de votre commentaire, utilisez ce qui suit dans votre manifeste d'activité
<activity Android:windowSoftInputMode="adjustResize"> </activity>
adjustResize = redimensionner le contenu de la page
adjustPan = déplacer le contenu de la page sans le redimensionner
Comme doc dit, gardez également à l'esprit la bonne combinaison de valeurs:
Ce paramètre doit correspondre à l'une des valeurs répertoriées dans le tableau suivant ou à la combinaison d'une valeur "state ..." et d'une valeur "ajuster ...". La définition de plusieurs valeurs dans l'un des groupes, par exemple plusieurs valeurs "d'état ...", entraîne des résultats non définis. Les valeurs individuelles sont séparées par une barre verticale (|). Par exemple:
<activity Android:windowSoftInputMode="stateVisible|adjustResize" . . . >
Vous pouvez utiliser Android:windowSoftInputMode="stateAlwaysHidden|adjustResize"
dans AndroidManifest.xml pour votre activité actuelle et utiliser Android:fitsSystemWindows="true"
dans les styles ou rootLayout.