kulkarni swati
kulkarni swati

Reputation: 39

How do I avoid a moving toolbar when the keyboard is open in a fullscreen activity?

In my app, when the keyboard is invoked, the toolbar is moved upwards. How do I prevent the toolbar from moving upwards?

Here's the code to make the activity full screen:

getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE);

Layout:

<RelativeLayout xmlns:android=".."
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true">
    <android.support.design.widget.AppBarLayout
        android:layout_alignParentTop="true" 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:background="@drawable/toolbar_background">

        <include layout="@layout/layout_toolbar" />
    </android.support.design.widget.AppBarLayout>

    <ScrollView.......>

    <RelativeLayout......>

    <EditText....><!--There are multiple EditTexts here.-->

</RelativeLayout>

Upvotes: 0

Views: 313

Answers (3)

AndroidMech
AndroidMech

Reputation: 1696

You can use a CollapsingToolBarLayout if it fits your UI requirement inside of the AppBarLayout.

<android.support.design.widget.AppBarLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <android.support.design.widget.CollapsingToolbarLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <android.support.v7.widget.Toolbar 
           xmlns:android="http://schemas.android.com/apk/res/android"
           xmlns:ripple="http://schemas.android.com/apk/res-auto"
           android:id="@+id/tv_toolbar"
           android:layout_width="match_parent"
           android:layout_height="50dp"
           android:background="#fff"
           ripple:contentInsetStart="0dp">
        </android.support.v7.widget.Toolbar>

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

Upvotes: 0

Dhaiyur
Dhaiyur

Reputation: 583

Add this line in menifests for Activity

android:windowSoftInputMode="adjustResize"

Upvotes: 1

Karan Harsh Wardhan
Karan Harsh Wardhan

Reputation: 1126

add android:fitsSystemWindows="true" in your toolbar's root layout

Most of the time, your app won’t need to draw under the status bar or the navigation bar, but if you do: you need to make sure interactive elements (like buttons) aren’t hidden underneath them. That’s what the default behavior of the android:fitsSystemWindows="true" attribute gives you: it sets the padding of the View to ensure the contents don’t overlay the system windows.

A few things to keep in mind:

fitsSystemWindows is applied depth first — ordering matters: it’s the first View that consumes the insets that makes a difference

from https://medium.com/androiddevelopers/why-would-i-want-to-fitssystemwindows-4e26d9ce1eec

basically you're telling the toolbar not to move & stay on top & instead move the views underneath it upwards below it

Upvotes: 0

Related Questions