SoftKeyboard推送所有视图

时间:2017-07-22 08:21:48

标签: android xml user-interface android-softkeyboard

我正在尝试制作聊天布局。问题是当我关注EditText时,会出现软键盘并将所有内容都推高。我希望它只使用发送指令推送底部部分,以便顶部(棕色)标题部分和带有消息的recyclerview仍然可见。 facebook messenger app有的东西。我试着把#34;调整锅,调整大小"和清单文件中的所有内容,但它没有工作。当没有任何焦点时,这是我的默认布局:

这是当我按下EditText并出现键盘并将所有内容移开时:

enter image description here我再也看不到标题了,也没有在recyclerView中看到这条消息。

基本上我希望所有元素始终保持可见,因此当键盘按下时,用户仍然可以看到标题,消息和发送。

这是我的布局代码:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">

<LinearLayout
    android:id="@+id/ll_profile"
    android:layout_width="match_parent"
    android:layout_height="60dp"
    android:layout_alignParentTop="true"
    android:layout_marginBottom="10dp"
    android:layout_marginStart="10dp"
    android:layout_marginTop="10dp">

    <de.hdodenhof.circleimageview.CircleImageView
        android:id="@+id/iv_profile"
        android:layout_width="40dp"
        android:layout_height="40dp"
        android:src="@drawable/img_back" />

    <TextView
        android:id="@+id/tv_profile"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical"
        android:layout_marginStart="10dp" />
</LinearLayout>

<android.support.v4.widget.NestedScrollView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_below="@id/ll_profile"
    android:fillViewport="true"
    android:isScrollContainer="false">

    <RelativeLayout

        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <View
            android:id="@+id/view_line"
            android:layout_width="match_parent"
            android:layout_height="1dp"
            android:layout_marginEnd="10dp"
            android:layout_marginStart="10dp"
            android:background="@color/gray_light_trans" />

        <LinearLayout
            android:id="@+id/ll_send"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:weightSum="10">

            <EditText
                android:id="@+id/et_message"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="9"
                android:hint="Message" />

            <Button
                android:id="@+id/btn_send"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="Send" />
        </LinearLayout>

        <android.support.v7.widget.RecyclerView
            android:id="@+id/rv_chat"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_above="@id/ll_send"
            android:layout_below="@id/view_line" />
    </RelativeLayout>
</android.support.v4.widget.NestedScrollView>

2 个答案:

答案 0 :(得分:0)

在您的活动清单

中使用android:windowSoftInputMode =“stateHidden”

答案 1 :(得分:0)

问题是我在我的App活动中使用全屏幕主题。当我从主基础主题中删除全屏时,它正在工作。