简体   繁体   中英

Push only the bottom part up when Soft keyboard appears

The only thing I am trying do that there will be an editText at the top and after that there will be an ImageView. Now at the bottom line there will be some buttons (ex. emojis) and this bottom part will only be pushed up by the soft keyboard whenever it will appear.

I am making it more clear by attaching this layout of Facebook. required output

I have gone through all these SO questions and also tried their answers but no luck. May be I am doing something wrong.

Android: Resize only parts of view with soft keyboard on screen

Android: How do I prevent the soft keyboard from pushing my view up?

android : How to prevent resizing the window when displaying the virtual keyboard

My XML code

<ScrollView
    android:id="@+id/scrollOnPost"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:isScrollContainer="false"
    android:fillViewport="true"
    android:layout_below="@+id/header_layout">
<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:weightSum="4"
    android:layout_gravity="bottom"
    android:gravity="bottom">
 <EditText
            android:id="@+id/ed_post"
            android:layout_width="match_parent"
            android:layout_height="match_parent"/>
<ImageView
        android:id="@+id/img_posted_list_row"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="2.7"
        android:adjustViewBounds="true"
        android:src="@mipmap/ic_launcher"
        android:scaleType="fitCenter"
        android:background="@color/red"/>

</LinearLayout>
</ScrollView>

<ImageButton
    android:id="@+id/imgBtn_Emoji"
    android:layout_width="40dp"
    android:layout_height="40dp"
    android:layout_alignParentBottom="true"
    android:src="@drawable/smile_face"
    android:background="@drawable/button_pressed_white"
    />

All I getting that my soft keyboard always pushing the whole layout up not just the emoji at the bottom. Thanks.

Dude it worked manifest :

<activity android:name=".TestActivity"
        android:windowSoftInputMode="adjustResize"/>

xml :

<?xml version="1.0" encoding="utf-8"?>
<ScrollView android:id="@+id/scrollOnPost"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:isScrollContainer="false"
android:fillViewport="true"
android:layout_below="@+id/header_layout"
xmlns:android="http://schemas.android.com/apk/res/android">
<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:weightSum="4"
    android:layout_gravity="bottom"
    android:gravity="bottom">
    <EditText
        android:id="@+id/ed_post"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>
    <ImageView
        android:id="@+id/img_posted_list_row"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="2.7"
        android:adjustViewBounds="true"
        android:scaleType="fitCenter"
        android:background="@color/colorPrimary"/>
    <ImageButton
        android:id="@+id/imgBtn_Emoji"
        android:layout_width="40dp"
        android:layout_height="40dp"
        android:layout_alignParentBottom="true"
        android:src="@mipmap/call"
        />
</LinearLayout>

I guess you want only the editText to push up when keyboard is visible(Correct me if i am wrong) for that i have got an idea i don't know if it will work or not you can try it out if you find it logical

Idea is to first check if keyboard is visible or not and secondly if visible get its height and programatically give your layout a marginBottom which will be equal to the height of keyboard(using layoutParams).

check this links for implementing above idea :

How to capture the "virtual keyboard show/hide" event in Android?

Is there any way in android to get the height of virtual keyboard of device

How to set RelativeLayout layout params in code not in xml

在单击编辑文本之前

单击编辑文本后

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM