Разница между adjustResize и adjustPan в android?

Я попытался написать код, который используется для изменения размера компонентов пользовательского интерфейса, когда появляется мягкая клавиатура . Когда я использую adjustResize, он res-размер компонентов пользовательского интерфейса и в то же время adjustPan дал мне тот же результат. Я хочу знать разницу между ними и когда использовать каждый компонент? Какой из них (adjustPan или adjustResize) хорош для изменения размера пользовательского интерфейса?

Вот мой 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> 

И файл манифеста:

 <?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> 

От ссылки на сайт разработчика Android

"adjustResize"

Главное окно операции всегда изменяется, чтобы освободить место для мягкой клавиатуры на экране.

"adjustPan"

Главное окно мероприятия не изменяется, чтобы освободить место для мягкой клавиатуры. Скорее, содержимое окна автоматически разворачивается так, что текущая фокусировка никогда не закрывается клавиатурой, и пользователи всегда могут видеть, что они печатают. Это, как правило, менее желательно, чем изменение размера, поскольку пользователю может понадобиться закрыть мягкую клавиатуру, чтобы получить доступ к скрытым частям окна и взаимодействовать с ними.

Согласно вашему комментарию, используйте следующее в манифесте вашей деятельности

 <activity android:windowSoftInputMode="adjustResize"> </activity> 

Как говорит док, также помните правильную комбинацию значений:

Параметр должен быть одним из значений, перечисленных в следующей таблице, или комбинацией одного значения «состояние …» плюс одно значение «настроить …». Например, для установки нескольких значений в любой группе – несколько значений «состояние …» – имеет неопределенные результаты. Отдельные значения разделяются вертикальной полосой (|). Например:

 <activity android:windowSoftInputMode="stateVisible|adjustResize" . . . > 

AdjustResize = изменить размер содержимого страницы

AdjustPan = перемещать содержимое страницы без изменения размера содержимого страницы

Вы можете использовать android:windowSoftInputMode="stateAlwaysHidden|adjustResize" в AndroidManifest.xml для вашей текущей активности и использовать android:fitsSystemWindows="true" в стилях или rootLayout.