出现软键盘时,仅向上推动底部

时间:2017-02-16 11:17:01

标签: android layout android-edittext scrollview android-softkeyboard

我唯一想做的就是在顶部会有一个editText,之后会有一个ImageView。 现在在底线会有一些按钮(例如表情符号),这个底部只会在出现时被软键盘向上推。

通过附加Facebook的这种布局,我更清楚了。 required output

我已经完成了所有这些问题并尝试了他们的答案,但没有运气。可能是我做错了。

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

我的XML代码

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

我得到的只是我的软键盘总是推动整个布局而不仅仅是底部的表情符号。感谢。

1 个答案:

答案 0 :(得分:0)

老兄,它有效 清单:

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

我想你只想在键盘可见的情况下向上推动editText(如果我错了就纠正我)因为我有一个想法我不知道它是否会起作用你可以尝试一下如果你觉得它合乎逻辑

想法是首先检查键盘是否可见;其次,如果可见,请获取其高度并以编程方式为您的布局提供marginBottom,它将等于键盘的高度(使用layoutParams)。

检查此链接以实现上述想法:

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

before clicking edit text

after clicking edit text