当软输入打开时,EditText多行不扩展

时间:2016-02-17 11:55:22

标签: android android-edittext multiline

我已经看到很多关于这个主题的答案,但没有一个能解决我的问题。我的布局文件如下所示:

<android.support.design.widget.CoordinatorLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:scrollbars="vertical"
    android:background="@color/lightGrey"
    android:fitsSystemWindows="true">

    <android.support.design.widget.AppBarLayout
        android:id="@+id/chatAppBarLayout"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        android:layout_alignParentTop="true">

        <android.support.v7.widget.Toolbar
            android:id="@+id/chatToolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            android:background="?attr/colorPrimary"
            android:elevation="4dp"
            android:theme="@style/ThemeOverlay.AppCompat.ActionBar"
            app:layout_scrollFlags="scroll|enterAlways" />

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

    <RelativeLayout
        android:id="@+id/chatScreen"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:paddingLeft="16dp"
        android:paddingRight="16dp"
        android:paddingBottom="16dp"
        android:paddingTop="16dp"
        android:layout_marginTop="?attr/actionBarSize">

        <ListView
            android:id="@+id/chatListView"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_above="@+id/sendMessageContainer"
            android:layout_marginBottom="10dp"
            android:scrollbars="none"
            android:stackFromBottom="true"
            android:transcriptMode="normal">
        </ListView>

        <RelativeLayout
            android:id="@+id/sendMessageContainer"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:minHeight="30dp"
            android:layout_alignParentBottom="true"
            android:layout_marginBottom="0dp">

            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignBaseline="@+id/sendChatMessage"
                android:layout_toLeftOf="@+id/sendChatMessage"
                android:layout_alignParentLeft="true">

                <EditText
                    android:id="@+id/chatInput"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:inputType="textMultiLine"
                    android:lines="1"
                    android:maxLines="5"
                    android:scrollbars="vertical" />

            </LinearLayout>

            <android.support.design.widget.FloatingActionButton
                android:id="@+id/sendChatMessage"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginBottom="5dp"
                android:layout_marginLeft="15dp"
                android:layout_alignParentRight="true" />
        </RelativeLayout>
    </RelativeLayout>
</android.support.design.widget.CoordinatorLayout>

我希望它最初显示1行,但在输入文本时扩展到最多5行。我无法弄清楚为什么我的EditText不会进入多行。我有一种感觉,因为它被固定在一些视图上,但我无法弄明白。任何帮助将不胜感激。

编辑:所以看来上面的代码,我的EditText IS扩展到多行,但不是当软输入打开时。我打开软输入,输入2行,EditText显示一行带有垂直滚动。当我关闭软输入时,它会扩展为2行。当我再次打开软输入时,有2行。如果我输入另一行,它会显示2行滚动。如果我关闭,它会扩展到3行。当软输入打开时,为什么不扩展?

5 个答案:

答案 0 :(得分:0)

您已将行设置为1,这就是为什么它只显示一行。

更改android:lines="5"

并添加android:minLines="1"

这将是

<EditText
    android:id="@+id/chatInput"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:inputType="textMultiLine"
    android:lines="5"
    android:minLines="1"
    android:scrollbars="vertical" />

答案 1 :(得分:0)

试试这个

 android:inputType="textMultiLine"
 android:lines="5"

然后看起来像

     <EditText
        android:id="@+id/editTextmessage"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:ems="15"
        android:inputType="textMultiLine"
        android:maxLines="5"
        android:scrollbars="vertical"
        android:textSize="@dimen/small_txt_size" />

答案 2 :(得分:0)

试试这种方式

               <EditText
                    android:id="@+id/chatInput"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:inputType="textMultiLine"
                    android:minLines="5"
                    android:scrollbars="vertical" />

答案 3 :(得分:0)

你也可以这样做:

<android.support.v4.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        tools:context="nasuakza.com.br.nasuakz.activities.AtvProduto">

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/descricao" />
    </android.support.v4.widget.NestedScrollView>

答案 4 :(得分:0)

在源代码中添加以下行

editor.setSingleLine(false);