maryam
maryam

Reputation: 1505

windowSoftInputMode="adjustPan|adjustResize" did not work with coordinatelayout

I have a layout with multiple EditText and a button in the bottom of it. I want to my layout stay on above of keyboard when keyboard is showing. I search for this problem and I found should put android:windowSoftInputMode="adjustPan|adjustResize" attribute in activity tag of manifest. I do this But did not work for me. I put also android:fitsSystemWindows="true" in the root view. This is my xml Layout file of my fragment:

<ScrollView
    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"
    android:fillViewport="true"
    android:id="@+id/scrollView2"
    android:fitsSystemWindows="true">
<androidx.constraintlayout.widget.ConstraintLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".ui.LoginByUserNameFragment"
        android:layoutDirection="rtl"
        android:fitsSystemWindows="true"
        >
    <ImageView
            android:src="@drawable/ic_back_arrow"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/imgBack_lbu"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            android:layout_marginStart="8dp"
            android:layout_marginLeft="8dp"
            app:layout_constraintHorizontal_bias="0.02"
            android:layout_marginTop="8dp"/>
    <ImageView
            android:src="@drawable/img_typewriter"
            android:layout_width="289dp"
            android:layout_height="152dp"
            android:id="@+id/imageView3" android:layout_marginTop="8dp"
            app:layout_constraintTop_toBottomOf="@+id/imgBack_lbu" app:layout_constraintEnd_toEndOf="parent"
            android:layout_marginEnd="8dp" app:layout_constraintStart_toStartOf="parent"
            android:layout_marginStart="8dp"/>
    <com.google.android.material.button.MaterialButton
            android:text="@string/login_with_sms"
            android:layout_width="150dp"
            android:layout_height="60dp"
            android:id="@+id/btnLoginByOpt"
            android:layout_marginTop="16dp"
            app:layout_constraintTop_toBottomOf="@+id/imageView3"
            app:layout_constraintEnd_toEndOf="parent"
            android:layout_marginEnd="16dp"
            app:layout_constraintStart_toStartOf="parent"
            android:layout_marginStart="16dp"
            android:textColor="@color/darkGreen"
            app:icon="@drawable/ic_sms"
            app:iconTint="#083316"
            app:iconGravity="textStart"
            android:gravity="center"
            android:textAlignment="center"
            app:cornerRadius="5dp"
            app:backgroundTint="@color/mainGrey"
            app:layout_constraintHorizontal_bias="0.497"/>
    <ImageView android:layout_width="0dp"
            android:layout_height="2dp"
            app:layout_constraintStart_toStartOf="parent"
            android:layout_marginStart="16dp"
            android:layout_marginLeft="16dp"
            android:background="@color/anotherGrey" android:id="@+id/view"
            app:layout_constraintHorizontal_bias="0.5" app:layout_constraintEnd_toStartOf="@+id/textView"
            app:layout_constraintTop_toTopOf="@+id/textView"
            app:layout_constraintBottom_toBottomOf="@+id/textView" android:layout_marginRight="16dp"
            android:layout_marginEnd="16dp"/>
    <TextView
            android:text="@string/or"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/textView"
            android:layout_marginTop="16dp"
            app:layout_constraintTop_toBottomOf="@+id/btnLoginByOpt"
            android:textColor="@color/anotherGrey"
            android:textSize="14sp"
            app:layout_constraintStart_toEndOf="@+id/view" app:layout_constraintHorizontal_bias="0.5"
            app:layout_constraintEnd_toStartOf="@+id/view2"/>
    <ImageView android:layout_width="0dp"
            android:layout_height="2dp"
            android:background="@color/anotherGrey"
            app:layout_constraintTop_toTopOf="@+id/textView"
            android:id="@+id/view2"
            app:layout_constraintEnd_toEndOf="parent"
            android:layout_marginEnd="16dp"
            android:layout_marginRight="16dp"
            app:layout_constraintStart_toEndOf="@+id/textView"
            app:layout_constraintHorizontal_bias="0.5"
            app:layout_constraintBottom_toBottomOf="@+id/textView" android:layout_marginLeft="16dp"
            android:layout_marginStart="16dp"/>
    <TextView
            android:text="@string/login_with_phone_and_password"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/textView2"
            app:layout_constraintEnd_toEndOf="parent"
            android:layout_marginEnd="8dp"
            app:layout_constraintStart_toStartOf="parent"
            android:layout_marginStart="8dp"
            app:layout_constraintTop_toBottomOf="@+id/textView"
            android:layout_marginTop="16dp"
            app:layout_constraintHorizontal_bias="0.497"
            android:textColor="@color/anotherGrey"/>

    <com.google.android.material.textfield.TextInputLayout
            android:id="@+id/edtPhon_input"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="@string/prompt_phone"
            style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
            app:layout_constraintTop_toBottomOf="@+id/textView2"
            android:layout_marginTop="28dp"
            android:layout_marginEnd="8dp"
            app:layout_constraintEnd_toEndOf="parent"
            android:layout_marginStart="8dp"
            app:layout_constraintStart_toStartOf="parent"
            >

        <com.google.android.material.textfield.TextInputEditText
                android:id="@+id/edtPhon"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:inputType="phone"
                android:maxLines="1"
                android:background="@drawable/drw_bg_edt"
                android:padding="@dimen/padding_button"
                app:drawableLeftCompat="@drawable/phone_drawable_selector"
                android:drawablePadding="3dp"
                android:imeOptions="actionNext"
                />

    </com.google.android.material.textfield.TextInputLayout>

    <com.google.android.material.textfield.TextInputLayout
            android:id="@+id/edtPassword_input"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
            app:layout_constraintTop_toBottomOf="@+id/edtPhon_input"
            android:layout_marginStart="8dp"
            app:layout_constraintStart_toStartOf="parent"
            android:layout_marginEnd="8dp"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintHorizontal_bias="0.0"
            android:layout_marginTop="20dp">
        <com.google.android.material.textfield.TextInputEditText
                android:id="@+id/edtPassword"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:inputType="textPassword"
                android:maxLines="1"
                android:background="@drawable/drw_bg_edt"
                android:padding="@dimen/padding_button"
                app:drawableLeftCompat="@drawable/pass_drw"
                android:drawablePadding="3dp"
                android:imeOptions="actionDone">

        </com.google.android.material.textfield.TextInputEditText>

    </com.google.android.material.textfield.TextInputLayout>

    <com.google.android.material.button.MaterialButton
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            app:layout_constraintTop_toBottomOf="@+id/edtPassword_input"
            app:layout_constraintStart_toStartOf="parent"
            android:layout_marginStart="8dp"
            android:layout_marginEnd="8dp"
            app:layout_constraintEnd_toEndOf="parent"
            android:layout_marginTop="20dp"
            app:layout_constraintHorizontal_bias="0.0"
            android:textColor="@color/White"
            android:text="@string/general_login"
            android:gravity="center"
            app:cornerRadius="5dp"
            app:backgroundTint="@color/back_color_sign_btn"
            android:enabled="false"
            android:padding="@dimen/padding_button"
            android:id="@+id/btn_login"
            android:layout_marginBottom="8dp"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintVertical_bias="0.07"/>

    <TextView
            android:text="@string/do_register"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/txtSignUp"
            android:textColor="@color/mainGreen"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toEndOf="@+id/txtMember"
            app:layout_constraintHorizontal_bias="0.5"
            app:layout_constraintTop_toBottomOf="@+id/btn_login"
            android:layout_marginTop="16dp"
            android:layout_marginBottom="8dp"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintVertical_bias="0.25"/>
    <TextView
            android:text="@string/not_member"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/txtMember"
            android:background="?attr/selectableItemBackground"
            android:paddingEnd="5dp"
            android:paddingRight="5dp"
            android:textColor="@color/generalGrey"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintHorizontal_bias="0.5"
            app:layout_constraintEnd_toStartOf="@+id/txtSignUp"
            app:layout_constraintTop_toBottomOf="@+id/btn_login"
            app:layout_constraintHorizontal_chainStyle="packed"
            android:layout_marginTop="16dp" android:layout_marginBottom="8dp"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintVertical_bias="0.25"/>

</androidx.constraintlayout.widget.ConstraintLayout>

And this is the layout of main Activity:

    <androidx.coordinatorlayout.widget.CoordinatorLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".ui.MainActivity"
    android:fitsSystemWindows="true"
android:id="@+id/rootLayout">

    <fragment
            android:id="@+id/nav_host_fragment"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:name="androidx.navigation.fragment.NavHostFragment"
            app:navGraph="@navigation/mobile_navigation"
            app:defaultNavHost="true"
            app:layout_behavior="@string/appbar_scrolling_view_behavior"/>

</androidx.coordinatorlayout.widget.CoordinatorLayout>

This is the screenshot of the layout: enter image description here

And When keyboard is showing: enter image description here

Upvotes: 3

Views: 935

Answers (1)

maryam
maryam

Reputation: 1505

Finally I resolved my problem.I wrap my layout in a RelativeLayout and fix my button to a bottom of root.Also I use of adjustresize in the manifest.

    <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    xmlns:tools="http://schemas.android.com/tools">

<ScrollView
    android:id="@+id/scrollView2"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fillViewport="true"
    android:layout_above="@+id/lay_bottom">
        <androidx.constraintlayout.widget.ConstraintLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layoutDirection="rtl"
            tools:context=".ui.LoginByUserNameFragment">

            <ImageView
                android:id="@+id/imgBack_lbu"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginStart="8dp"
                android:layout_marginLeft="8dp"
                android:layout_marginTop="8dp"
                android:src="@drawable/ic_back_arrow"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintHorizontal_bias="0.02"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toTopOf="parent" />

            <ImageView
                android:id="@+id/imageView3"
                android:layout_width="289dp"
                android:layout_height="152dp"
                android:layout_marginStart="8dp"
                android:layout_marginTop="8dp"
                android:layout_marginEnd="8dp"
                android:src="@drawable/img_typewriter"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toBottomOf="@+id/imgBack_lbu" />

            <com.google.android.material.button.MaterialButton
                android:id="@+id/btnLoginByOpt"
                android:layout_width="150dp"
                android:layout_height="60dp"
                android:layout_marginStart="16dp"
                android:layout_marginTop="16dp"
                android:layout_marginEnd="16dp"
                android:gravity="center"
                android:padding="5dp"
                android:text="@string/login_with_sms"
                android:textColor="@color/darkGreen"
                app:backgroundTint="@color/mainGrey"
                app:cornerRadius="5dp"
                app:icon="@drawable/ic_sms"
                app:iconTint="#083316"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintHorizontal_bias="0.497"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toBottomOf="@+id/imageView3" />

            <ImageView
                android:id="@+id/view"
                android:layout_width="0dp"
                android:layout_height="2dp"
                android:layout_marginStart="16dp"
                android:layout_marginLeft="16dp"
                android:layout_marginEnd="16dp"
                android:layout_marginRight="16dp"
                android:background="@color/anotherGrey"
                app:layout_constraintBottom_toBottomOf="@+id/textView"
                app:layout_constraintEnd_toStartOf="@+id/textView"
                app:layout_constraintHorizontal_bias="0.5"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toTopOf="@+id/textView" />

            <TextView
                android:id="@+id/textView"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="16dp"
                android:text="@string/or"
                android:textColor="@color/anotherGrey"
                android:textSize="14sp"
                app:layout_constraintEnd_toStartOf="@+id/view2"
                app:layout_constraintHorizontal_bias="0.5"
                app:layout_constraintStart_toEndOf="@+id/view"
                app:layout_constraintTop_toBottomOf="@+id/btnLoginByOpt" />

            <ImageView
                android:id="@+id/view2"
                android:layout_width="0dp"
                android:layout_height="2dp"
                android:layout_marginStart="16dp"
                android:layout_marginLeft="16dp"
                android:layout_marginEnd="16dp"
                android:layout_marginRight="16dp"
                android:background="@color/anotherGrey"
                app:layout_constraintBottom_toBottomOf="@+id/textView"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintHorizontal_bias="0.5"
                app:layout_constraintStart_toEndOf="@+id/textView"
                app:layout_constraintTop_toTopOf="@+id/textView" />

            <TextView
                android:id="@+id/textView2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginStart="8dp"
                android:layout_marginTop="16dp"
                android:layout_marginEnd="8dp"
                android:text="@string/login_with_phone_and_password"
                android:textColor="@color/anotherGrey"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintHorizontal_bias="0.497"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toBottomOf="@+id/textView" />

            <com.google.android.material.textfield.TextInputLayout
                android:id="@+id/edtPhon_input"
                style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginStart="8dp"
                android:layout_marginTop="28dp"
                android:layout_marginEnd="8dp"
                android:hint="@string/prompt_phone"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toBottomOf="@+id/textView2">

                <com.google.android.material.textfield.TextInputEditText
                    android:id="@+id/edtPhon"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:background="@drawable/drw_bg_edt"
                    android:drawablePadding="3dp"
                    android:fontFamily="@font/iran_sans_fanum"
                    android:imeOptions="actionNext"
                    android:inputType="phone"
                    android:layoutDirection="ltr"
                    android:maxLines="1"
                    android:padding="@dimen/padding_button"
                    app:drawableLeftCompat="@drawable/phone_drawable_selector" />

            </com.google.android.material.textfield.TextInputLayout>

            <com.google.android.material.textfield.TextInputLayout
                android:id="@+id/edtPassword_input"
                style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginStart="8dp"
                android:layout_marginTop="20dp"
                android:layout_marginEnd="8dp"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintHorizontal_bias="0.0"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toBottomOf="@+id/edtPhon_input">

                <com.google.android.material.textfield.TextInputEditText
                    android:id="@+id/edtPassword"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:background="@drawable/drw_bg_edt"
                    android:drawablePadding="3dp"
                    android:fontFamily="@font/iran_sans_fanum"
                    android:inputType="textPassword"
                    android:maxLines="1"
                    android:padding="@dimen/padding_button"
                    android:imeOptions="actionDone"
                    app:drawableLeftCompat="@drawable/pass_drw">

                </com.google.android.material.textfield.TextInputEditText>

            </com.google.android.material.textfield.TextInputLayout>
        </androidx.constraintlayout.widget.ConstraintLayout>
</ScrollView>
    <androidx.constraintlayout.widget.ConstraintLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:id="@+id/lay_bottom">
        <com.google.android.material.button.MaterialButton
            android:id="@+id/btn_login"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginStart="8dp"
            android:layout_marginTop="20dp"
            android:layout_marginEnd="8dp"
            android:layout_marginBottom="8dp"
            android:enabled="false"
            android:gravity="center"
            android:padding="@dimen/padding_button"
            android:text="@string/general_login"
            android:textColor="@color/White"
            app:backgroundTint="@color/back_color_sign_btn"
            app:cornerRadius="5dp"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintHorizontal_bias="0.0"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintVertical_bias="0.07" />

        <TextView
            android:id="@+id/txtSignUp"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="16dp"
            android:layout_marginBottom="8dp"
            android:text="@string/do_register"
            android:textColor="@color/mainGreen"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintHorizontal_bias="0.5"
            app:layout_constraintStart_toEndOf="@+id/txtMember"
            app:layout_constraintTop_toBottomOf="@+id/btn_login"
            app:layout_constraintVertical_bias="0.25" />

        <TextView
            android:id="@+id/txtMember"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="16dp"
            android:layout_marginBottom="8dp"
            android:background="?attr/selectableItemBackground"
            android:paddingEnd="5dp"
            android:paddingRight="5dp"
            android:text="@string/not_member"
            android:textColor="@color/generalGrey"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toStartOf="@+id/txtSignUp"
            app:layout_constraintHorizontal_bias="0.5"
            app:layout_constraintHorizontal_chainStyle="packed"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/btn_login"
            app:layout_constraintVertical_bias="0.25" />
    </androidx.constraintlayout.widget.ConstraintLayout>
</RelativeLayout>

And in the manifest:

<activity
            android:name=".ui.MainActivity"
        android:windowSoftInputMode="adjustResize"
           >

Upvotes: 3

Related Questions