Android Word-Wrap EditText文本

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

在开发Android应用程序时,我处理了更复杂的问题,这看起来应该是一个直截了当的过程。

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

这里是我的布局文件中的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> 

除了find问题的根源之外,我find了解决办法。 如果使用android:inputType ,则必须使用textMultiLine来启用多行支持。 此外,使用inputType取代代码android:singleLine="false" 。 如果使用inputType,那么重申一下,必须使用textMultiLine,否则EditText对象将只包含一行,而不包含单词换行。

编辑:谢谢雅各布马利特提供进一步的好build议。 他build议将布尔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" /> 

好吧,我想通了,你必须在你的xml中为你的EditText设置android:scrollHorizontally="false" 。 我很确定这应该工作。

假设你只想一条线,然后把它扩展到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"/> 

通过增加android:lines你可以定义扩展多less行。

我想到了。 该行,

 android:inputType="textCapSentences" 

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

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

编辑文本将垂直滚动按下input,代码如下

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

您必须将以下属性添加到您的编辑文本。

 android:inputType="textMultiLine" 

另外,如果您设置高度或将edittext的最大行数设置为特定值,那么当您键入多个字符时,它将滚动。

 <TableLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/table" android:layout_width="fill_parent" android:layout_height="wrap_content" android:stretchColumns="1" > <TableRow android:id="@+id/newRow"> <LinearLayout android:layout_width="fill_parent" android:orientation="vertical" android:layout_height="wrap_content" android:gravity="left" android:paddingBottom="10dip"> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceLarge" android:text="Some Text" /> </LinearLayout> </TableRow> <View android:layout_height="2dip" android:background="#FF909090" /> <TableRow> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:paddingTop="10dip"> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Some Text" android:paddingBottom="5dip" /> <EditText android:id="@+id/editbox" android:layout_width="wrap_content" android:layout_height="150px" android:gravity="top" android:inputType="textFilter" android:scrollHorizontally="false" /> </RelativeLayout> </TableRow> <TableRow> <LinearLayout android:layout_width="fill_parent" android:layout_height="fill_parent" > <Button android:id="@+id/btnone" android:layout_width="3dip" android:layout_height="wrap_content" android:layout_margin="2dip" android:layout_weight="1" android:text="Btn" /> <Button android:id="@+id/btntwo" android:layout_width="3dip" android:layout_height="wrap_content" android:layout_margin="2dip" android:layout_weight="1" android:text="Btn" /> </LinearLayout> </TableRow> </TableLayout>