Android Word-Wrap EditText文本

Bry*_*yan 69 xml android cpu-word word-wrap android-edittext

我一直试图让我的EditText框自动换行,但似乎无法做到.

我在开发Android应用程序时遇到了更复杂的问题,这似乎应该是一个直截了当的过程.

然而,问题仍然存在,我有一个大的文本框,只允许我在一行输入文本,直接继续,在我输入文本时水平滚动.

这是我的布局文件中EditText对象的XML代码.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    android:id="@+id/myWidget48"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    xmlns:android="http://schemas.android.com/apk/res/android"
    >
 <ScrollView
    android:id="@+id/myScrollView"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    >
    <LinearLayout
        android:id="@+id/widget37"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
    >

<EditText
        android:id="@+id/txtNotes"
        android:layout_width="300px"
        android:layout_height="120px"
        android:scrollbars="vertical"
        android:textSize="18sp"
        android:gravity="left"
        android:layout_marginTop="10dip"
        android:inputType="textCapSentences"
        >
    </EditText>
</LinearLayout>
</ScrollView>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

Bry*_*yan 159

除了找到问题的根源,我找到了解决方案.如果android:inputType使用,则必须使用textMultiLine来启用多行支持.此外,使用inputType取代代码android:singleLine="false".如果使用inputType,那么,重申一下,必须使用textMultiLine,或者EditText对象只包含一行,而不包含自动换行.

编辑:感谢Jacob Malliet就此提供进一步的好建议.他建议将boolean scrollHorizo​​ntally属性设置为false 'android:scrollHorizontally="false"'.

示例XML代码:

<EditText
    android:id ="@+id/edtInput"
    android:layout_width ="0dip" 
    android:layout_height ="wrap_content" 
    android:layout_weight ="1" 
    android:inputType="textCapSentences|textMultiLine"
    android:maxLines ="4" 
    android:maxLength ="2000" 
    android:hint ="@string/compose_hint"
    android:scrollHorizontally="false" />
Run Code Online (Sandbox Code Playgroud)

  • 为什么使用`android:layout_width ="0dip"`?正如我想的那样,它对我来说是看不见的. (3认同)

Jac*_*iet 19

好吧,我想通了,你必须设置android:scrollHorizontally="false"为您EditText在您的XML.我很确定这应该有效.

  • 五个不同的答案,这是唯一一个适合我的答案(除了我甚至没试过的可怕的表格) (2认同)

Hes*_*sam 14

假设您只想先创建一行,然后将其扩展为5行,并且您希望最多包含10行.

<EditText
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:id="@+id/etMessageBox"
                    android:layout_alignParentLeft="true"
                    android:layout_centerVertical="true"
                    android:autoLink="all"
                    android:hint="@string/message_edit_text_hint"
                    android:lines="5"
                    android:minLines="1"
                    android:gravity="top|left"
                    android:maxLines="10"
                    android:scrollbars="none"
                    android:inputType="textMultiLine|textCapSentences"/>
Run Code Online (Sandbox Code Playgroud)

通过增加android:lines你可以定义扩展它多少行.


Bry*_*yan 10

我想到了.这条线,

android:inputType="textCapSentences"
Run Code Online (Sandbox Code Playgroud)

是问题.将此行添加到EditText对象将使对象成为单行EditText,并且不会让单词换行,或允许用户按"Enter"在EditText中插入换行符或回车符.

  • 那么,只需使用android:inputType =“ textCapSentences | textMultiLine”即可。然后,您的EditText字段将以大写字母_和_开头,它将是多行。这个对我有用!现在我看到您无论如何都将其放在单独的答案中... (2认同)

Öze*_*can 10

您必须将以下属性添加到您的edittext.

android:inputType="textMultiLine"
Run Code Online (Sandbox Code Playgroud)

此外,如果您设置高度或将edittext的最大线设置为特定值,则在键入多个字符时它将滚动.


San*_*San 6

将整个活动包含在滚动视图中,并将以下编辑文本放在线性布局中,对我来说就像一个魅力.

编辑文本将自动滚动按Enter键,代码如下

<EditText
            android:id="@+id/editText1"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:ems="10"
            android:hint="Enter somehting"
            android:inputType="textMultiLine"
            android:maxLength="2000"
            android:maxLines="6"
            android:scrollHorizontally="false"
            android:scrollbars="vertical" > 
Run Code Online (Sandbox Code Playgroud)