【问题标题】:EditText multiline not expanding when soft input is open软输入打开时EditText多行不扩展
【发布时间】:2016-05-29 02:49:16
【问题描述】:

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

<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 扩展为多行,但不是在软输入打开时。我打开软输入,输入 2 行,EditText 显示一行垂直滚动。当我关闭软输入时,它会扩展为 2 行。当我再次打开软输入时,有 2 行。如果我输入另一行,它会显示 2 行滚动。如果我关闭,它会扩展到 3 行。为什么打开软输入时不展开?

【问题讨论】:

  • 如果你想让android:lines="1"是多行的,为什么还要指定它?
  • 因为我希望它最初显示一行,但最多扩展到 5 行。
  • 来自lines 的文档:使 TextView 正好有这么多行。 (developer.android.com/intl/in/reference/android/widget/…) 所以在你的情况下,设置inputType="textMultiLine" 并设置@ 987654328@ 并删除 lines
  • 我试过这个,但它最初显示 5 行。
  • 这很奇怪,因为我刚刚尝试过,它最初显示单行,当我开始按 Enter 键时,它会扩展至 5 行并停止高度扩展并继续在内部扩展。

标签: android android-edittext multiline


【解决方案1】:

试试这个方法

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

【讨论】:

  • 请参考问题的编辑,我希望最初只有一行,但最多扩展到 5 行。
  • 同样的问题。最初是一行,不会扩展。
  • 好吧,对不起,这似乎是一个完全不同的问题。请参考更新后的问题。
  • 移除 android:fitsSystemWindows="true"
【解决方案2】:

你也可以这样做:

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

【讨论】:

  • 这似乎是一个完全不同的问题。请参考更新后的问题。
【解决方案3】:

在您的源代码中添加以下行

editor.setSingleLine(false);

【讨论】:

    【解决方案4】:

    您已将行设置为 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" />
    

    【讨论】:

    • 请参考问题的编辑,我希望最初只有一行,但最多扩展到 5 行。
    • 删除 android:lines=1 会导致最初有 5 行。
    • @VedavyasBhat:更新了我的答案。
    • 好吧,对不起,这似乎是一个完全不同的问题。请参考更新后的问题。
    【解决方案5】:

    试试这个

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

    【讨论】:

    • 请参考问题的编辑,我希望最初只有一行,但最多扩展到 5 行。
    • 你的意思是自动扩行??
    • @VedavyasBhat 新的更新答案非常适合我。尝试使 wrap_content 的高度可能是它的。
    • 好吧,对不起,这似乎是一个完全不同的问题。请参考更新后的问题。
    猜你喜欢
    • 2020-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多