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议将布尔scrollHorizontally属性设置为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>