2013-07-01 4 views
72

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

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

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

ответ

137

Из Android Developer Site link

"adjustResize"

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

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

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

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

поблагодарить Вас за хороший ответ. Теперь у меня проблема с моим пользовательским интерфейсом.У меня есть edittext и кнопка внизу моего макета. Я хочу показать те, что выше мягкой клавиатуры, когда появляется мягкая клавиатура. Как я могу это достичь. Можете ли вы помочь мне решить эту проблему? – androidcodehunter

+0

проверить обновленный ответ – stinepike

+1

Это не работает для меня. На самом деле я хотел: я просто хочу показать Edittext и Button над мягкой клавиатурой, когда я пытаюсь что-то написать в поле Edittext. Я попробовал ваше решение, но не работал. – androidcodehunter

8

Как doc говорит также иметь в виду правильное сочетание значений:

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

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

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

6

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

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

Смежные вопросы