Difference between adjustResize and adjustPan in android?

前端 未结 5 1211
南笙
南笙 2020-11-22 16:38

I tried to write a code which is used to re-size the UI components when soft-keyboard appears. When I use adjustResize, it res-size the UI

相关标签:
5条回答
  • 2020-11-22 16:50

    As doc says also keep in mind the correct value combination:

    The setting must be one of the values listed in the following table, or a combination of one "state..." value plus one "adjust..." value. Setting multiple values in either group — multiple "state..." values, for example — has undefined results. Individual values are separated by a vertical bar (|). For example:

    <activity android:windowSoftInputMode="stateVisible|adjustResize" . . . >
    
    0 讨论(0)
  • 2020-11-22 16:58

    adjustResize = resize the page content

    adjustPan = move page content without resizing page content

    0 讨论(0)
  • 2020-11-22 16:58

    I was also a bit confused between adjustResize and adjustPan when I was a beginner. The definitions given above are correct.
    AdjustResize : Main activity's content is resized to make room for soft input i.e keyboard
    AdjustPan : Instead of resizing overall contents of the window, it only pans the content so that the user can always see what is he typing
    AdjustNothing : As the name suggests nothing is resized or panned. Keyboard is opened as it is irrespective of whether it is hiding the contents or not.

    I have a created a example for better understanding
    Below is my xml file:

    <?xml version="1.0" encoding="utf-8"?>
    <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".MainActivity">
    
        <EditText
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:hint="Type Here"
            app:layout_constraintTop_toBottomOf="@id/button1"/>
    
    
        <Button
            android:id="@+id/button1"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:text="Button1"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toStartOf="@id/button2"
            app:layout_constraintStart_toStartOf="parent"
            android:layout_marginBottom="@dimen/margin70dp"/>
    
        <Button
            android:id="@+id/button2"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:text="Button2"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintStart_toEndOf="@id/button1"
            app:layout_constraintEnd_toStartOf="@id/button3"
            android:layout_marginBottom="@dimen/margin70dp"/>
    
        <Button
            android:id="@+id/button3"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:text="Button3"
            app:layout_constraintRight_toRightOf="parent"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toEndOf="@id/button2"
            android:layout_marginBottom="@dimen/margin70dp"/>
    </android.support.constraint.ConstraintLayout>
    

    Here is the design view of the xml


    AdjustResize Example below:


    AdjustPan Example below:


    AdjustNothing Example below:

    0 讨论(0)
  • 2020-11-22 17:06

    From the Android Developer Site link

    "adjustResize"

    The activity's main window is always resized to make room for the soft keyboard on screen.

    "adjustPan"

    The activity's main window is not resized to make room for the soft keyboard. Rather, the contents of the window are automatically panned so that the current focus is never obscured by the keyboard and users can always see what they are typing. This is generally less desirable than resizing, because the user may need to close the soft keyboard to get at and interact with obscured parts of the window.

    according to your comment, use following in your activity manifest

    <activity android:windowSoftInputMode="adjustResize"> </activity>
    
    0 讨论(0)
  • 2020-11-22 17:06

    You can use android:windowSoftInputMode="stateAlwaysHidden|adjustResize" in AndroidManifest.xml for your current activity, and use android:fitsSystemWindows="true" in styles or rootLayout.

    0 讨论(0)
提交回复
热议问题