Próbowałem napisać kod, który jest używany do zmiany rozmiaru komponentów interfejsu użytkownika, gdy pojawia się klawiatura programowa. Kiedy używam AdjustResize, zmienia rozmiar komponentów interfejsu użytkownika, a jednocześnie adjustPan dał mi ten sam wynik. Chcę poznać różnicę między nimi i kiedy używać każdego komponentu? Który z nich (adjustPan lub adjustResize) jest dobry do zmiany rozmiaru interfejsu użytkownika?
Oto mój 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>
i plik 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>
źródło
adjustResize = zmień rozmiar zawartości strony
adjustPan = przenieś zawartość strony bez zmiany rozmiaru zawartości strony
źródło
Byłem też trochę zdezorientowany, kiedy byłem początkującym użytkownikiem, jeśli chodzi o adjustResize i adjustPan. Podane powyżej definicje są poprawne.
AdjustResize: Rozmiar zawartości głównego działania jest zmieniany, aby zrobić miejsce na miękkie wprowadzanie, np. Klawiaturę
AdjustPan: Zamiast zmieniać rozmiar całej zawartości okna, przesuwa zawartość tylko w taki sposób, aby użytkownik zawsze mógł zobaczyć, co pisze.
AdjustNothing: Jak sugeruje nazwa, nic nie jest zmieniony rozmiar lub panoramiczny. Klawiatura jest otwierana bez względu na to, czy ukrywa zawartość, czy nie.
Stworzyłem przykład dla lepszego zrozumienia
Poniżej znajduje się mój plik xml:
Oto widok projektu XML AdjustResize Przykład poniżej: Przykład AdjustPan poniżej: AdjustNothing Przykład poniżej:
źródło
Jak mówi doc , pamiętaj również o poprawnej kombinacji wartości:
źródło
Możesz użyć
android:windowSoftInputMode="stateAlwaysHidden|adjustResize"
w AndroidManifest.xml dla swojej bieżącej aktywności i używaćandroid:fitsSystemWindows="true"
w stylach lub rootLayout.źródło