Różnica między adjustResize i adjustPan w Androidzie?
Próbowałem napisać kod, który służy do zmiany rozmiaru komponentów UI, gdy pojawia się soft-keyboard. Kiedy używam adjustResize, to res-rozmiar UI komponentów i w tym samym czasie adjustPan dał mi to samo wyjście. 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>
4 answers
From the Android Developer site link
"adjustResize"
Główne okno aktywności jest zawsze zmieniane, aby zrobić miejsce dla softu klawiatura na ekranie.
"adjustPan"
Główne okno aktywności nie jest zmieniane, aby zrobić miejsce dla softu klawiatura. Zamiast tego zawartość okna jest automatycznie przesuwana tak, że obecna ostrość nigdy nie jest zasłonięta przez klawiaturę i użytkowników zawsze widać co piszą. Jest to na ogół mniej pożądane niż zmiana rozmiaru, ponieważ użytkownik może potrzebować zamknąć miękką klawiaturę, aby wejdź i wejdź w interakcję z zasłoniętymi częściami okna.
Zgodnie z Twoim komentarzem, użyj następujących w manifeście aktywności
<activity android:windowSoftInputMode="adjustResize"> </activity>
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-12-27 07:13:15
AdjustResize = zmiana rozmiaru zawartości strony
AdjustPan = przenoszenie zawartości strony bez zmiany rozmiaru
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-10-08 03:06:53
Jak mówi doc Należy również pamiętać o prawidłowej kombinacji wartości:
Ustawienie musi być jedną z wartości wymienionych w poniższej tabeli, lub połączenie jednego " stanu.../ align = "left" / .."wartość. Ustawienie wielu wartości w obu grupach-multiple " stan..."wartości, na przykład-ma niezdefiniowane wyniki. Poszczególne wartości są oddzielone przez pionowy pasek ( / ). Na przykład:
<activity android:windowSoftInputMode="stateVisible|adjustResize" . . . >
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-11-19 16:26:56
Możesz użyć android:windowSoftInputMode="stateAlwaysHidden|adjustResize"
W AndroidManifest.xml dla bieżącej aktywności,
i używać android:fitsSystemWindows="true"
w stylach lub rootLayout.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-10-08 02:56:13