alvarlagerlof
alvarlagerlof

Reputation: 1566

Android soft keyboard hides RecyclerView

I'm trying to make a comments/chat layout with a RecyclerView and a fixed EditText at the bottom. Please don't say adjustPan or adjustResize. Does not work. adjustPan hides the keyboard.

I really need help with this, it's getting really frustrating

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <android.support.design.widget.AppBarLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/appbarlayout"
        android:paddingTop="@dimen/app_bar_top_padding">

        <android.support.v7.widget.Toolbar
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            app:theme="@style/ThemeOverlay.AppCompat.ActionBar"
            android:id="@+id/toolbar"
            app:titleTextColor="#FFFFFF" />

    </android.support.design.widget.AppBarLayout>


    <android.support.v7.widget.RecyclerView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/recycler_view"
        android:layout_below="@+id/appbarlayout"
        android:isScrollContainer="false"
        android:stackFromBottom="true"
        android:transcriptMode="normal"/>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="#2b2b2b"
        android:orientation="vertical"
        android:id="@+id/chat_box"
        android:layout_alignParentBottom="true">

        <View
            android:layout_width="match_parent"
            android:layout_height="1dp"
            android:background="?android:attr/listDivider"/>

        <FrameLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:padding="16dp">

            <EditText
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:hint="Skriv en kommentar"
                android:background="@android:color/transparent"
                android:textColor="@color/white"
                android:textColorHint="#d4d4d4"
                android:inputType="textCapSentences|textMultiLine"
                android:layout_marginRight="40dp"/>

            <ImageView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:src="@drawable/ic_send"
                android:background="@drawable/click"
                android:layout_gravity="right|center_vertical" />

        </FrameLayout>

    </LinearLayout>


</RelativeLayout>

Upvotes: 6

Views: 7184

Answers (3)

younglx_3
younglx_3

Reputation: 11

My RecyclerView was moving with the keyboard, which i certainly didn't want to.

"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.

First approach was to set android:windowSoftInputMode="adjustResize" in manifest file, which didn't work out.

However my second approach android:windowSoftInputMode="adjustPan" as @Kishan Solanki mentioned did.

My layout is a constraint wrapping up a relative wrapping up my recyclerview

Upvotes: 1

Kishan Solanki
Kishan Solanki

Reputation: 14636

Not sure why, but the solution given by Gabe Sechan not worked for me. What worked for me is adding this in manifest file.

android:windowSoftInputMode="adjustPan"

Upvotes: 2

Gabe Sechan
Gabe Sechan

Reputation: 93678

The correct answer is adjustResize, so the app is resized above the keyboard. However for that to work the rest of your layout needs to be written to be resizable. Yours isn't, as the recycler view isn't fixed in place. Add in a layout_above="@+id/chatBox" constraint on it so it lays out above the edit text, and it should resize to fit the space properly.

Also, adjustPan doesn't hide the keyboard. If it does, you have something really wrong in your code. adjustPan slides your app up without resizing. Which may be what you want, if you can find out what in your app is hiding the keyboard.

Upvotes: 0

Related Questions