How to scroll my entire layout when the keyboard appears?

10,436

Try to change your Keyboard to pan instead of resize. You could do that in your AndroidManifest.xml file, for your particular Activity, add the below to it

android:windowSoftInputMode="adjustPan"

or

If you want to hide then:

EditText editTextSearch = (EditText) findViewById(R.id.editTextSearch);

InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(editTextSearch.getWindowToken(), 0);

If want to show:

EditText editTextSearch = (EditText) findViewById(R.id.editTextSearch);
editTextSearch.requestFocus();
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);
Share:
10,436
androidevil
Author by

androidevil

I am an Android developer/user/lover.

Updated on June 04, 2022

Comments

  • androidevil
    androidevil almost 2 years

    This is my layout:

    <?xml version="1.0" encoding="utf-8"?>
    <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/scroll_layout"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:padding="@dimen/defaut_padding" >
    
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical" >
    
        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginBottom="@dimen/defaut_padding"
            android:orientation="vertical" >
    
            <FrameLayout
                android:id="@+id/photo"
                android:layout_width="match_parent"
                android:layout_height="wrap_content" >
    
                <ImageView
                    android:id="@+id/picture"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:scaleType="fitXY" />
    
                <ImageView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="right"
                    android:layout_margin="10dp"
                    android:background="@drawable/watermark" />
    
                <ProgressBar
                    android:id="@+id/bitmap_loading"
                    style="?android:attr/progressBarStyleLarge"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center"
                    android:visibility="visible" />
            </FrameLayout>
    
            <FrameLayout
                android:id="@+id/user"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@id/photo"
                android:layout_marginLeft="15dp"
                android:layout_marginTop="-30dp"
                android:background="@android:color/white"
                android:padding="@dimen/smallest_padding" >
    
                <ImageView
                    android:id="@+id/user_picture"
                    android:layout_width="50dp"
                    android:layout_height="50dp"
                    android:src="@drawable/anonymous_user" />
            </FrameLayout>
    
            <TextView
                android:id="@+id/user_name"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignBottom="@id/user"
                android:layout_marginLeft="@dimen/defaut_padding"
                android:layout_toRightOf="@id/user"
                android:text="@string/anonymous_user"
                android:textStyle="bold" />
        </RelativeLayout>
    
        <FrameLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content" >
    <EditText
        android:id="@+id/input_description"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="top"
        android:padding="5dp"
        android:layout_marginBottom="@dimen/defaut_padding"
        android:background="@drawable/textfield"
        android:hint="@string/description_hint"
        android:focusableInTouchMode="true"
        android:maxLines="3"
        android:scrollbars="vertical" />
    
    <Button
        android:id="@+id/publish"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/confirm_button_selector"
        android:text="@string/confirm_button"
        android:textColor="@android:color/white"
        android:textSize="@dimen/big_text_size"
        android:textStyle="bold" />
    
        </FrameLayout>
    </LinearLayout>
    
    </ScrollView>
    

    I want to scroll it when the soft keyboard appears when I start to digit at the EditText. How can I do this? Currenty the scroll works, but the keyboard appears above the button, and I want the button above the keyboard

    I've tried to move the scrool when the user clicks in the EditText, doing something like this:

    mSv.scrollTo(0, mSv.getBottom());
    

    where mSv is my ScrollView

    But it only works when the user clicks in the EditText at the second time.

    Thank you for any help.