Ich habe versucht, einen Code zu schreiben, mit dem die Größe der UI-Komponenten geändert wird, wenn eine Softtastatur angezeigt wird. Wenn ich adjustResize verwende, werden die UI-Komponenten in der Größe angepasst und gleichzeitig hat adjustPan die gleiche Ausgabe ausgegeben. Ich möchte den Unterschied zwischen ihnen wissen und wann ich jede Komponente verwenden soll. Welches (adjustPan oder adjustResize) eignet sich zum Ändern der Benutzeroberfläche?
Hier ist meine 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>
und die Menifest-Datei:
<?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>
quelle
adjustResize = Größe des Seiteninhalts ändern
adjustPan = Seiteninhalt verschieben, ohne die Größe des Seiteninhalts zu ändern
quelle
Als Anfänger war ich auch ein bisschen verwirrt zwischen adjustResize und adjustPan. Die oben angegebenen Definitionen sind korrekt.
AdjustResize: Die Größe des Inhalts der Hauptaktivität wird geändert, um Platz für weiche Eingaben zu schaffen, z. B. Tastatur.
AdjustPan: Anstatt die Größe des Gesamtinhalts des Fensters zu ändern , wird nur der Inhalt
verschoben, sodass der Benutzer immer sehen kann, was er eingibt. AdjustNothing: Wie der Name schon sagt, ist nichts Größe geändert oder verschoben. Die Tastatur wird geöffnet, unabhängig davon, ob der Inhalt ausgeblendet wird oder nicht.
Ich habe ein Beispiel zum besseren Verständnis erstellt.
Unten ist meine XML-Datei:
Hier ist die Entwurfsansicht des XML- Beispiels " AdjustResize" unten: Beispiel " AdjustPan" unten: Beispiel " AdjustNothing" unten:
quelle
Beachten Sie , wie doc sagt, auch die richtige Wertekombination:
quelle
Sie können
android:windowSoftInputMode="stateAlwaysHidden|adjustResize"
in AndroidManifest.xml für Ihre aktuelle Aktivität undandroid:fitsSystemWindows="true"
in Stilen oder in rootLayout verwenden.quelle