我一直试图让我的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>
答案 0 :(得分:152)
除了找到问题的根源外,我找到了解决方案。如果使用android:inputType
,则必须使用textMultiLine来启用多行支持。此外,使用inputType取代代码android:singleLine="false"
。如果使用inputType,那么,重申一下,必须使用textMultiLine,或者EditText对象只包含一行,而不包含自动换行。
修改:感谢 Jacob Malliet 为此提供进一步的好建议。他建议将布尔值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" />
答案 1 :(得分:18)
好的我明白了,你必须在你的xml中为android:scrollHorizontally="false"
设置EditText
。我很确定这应该有用。
答案 2 :(得分: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"/>
通过增加android:lines
,您可以定义展开多少行。
答案 3 :(得分:9)
我明白了。这条线,
android:inputType="textCapSentences"
是个问题。将此行添加到EditText对象将使对象成为单行EditText,并且不会让单词换行,或允许用户按“Enter”在EditText中插入换行符或回车符。
答案 4 :(得分:8)
您必须将以下属性添加到您的edittext。
android:inputType="textMultiLine"
此外,如果您设置高度或将edittext的最大行数设置为特定值,则在键入多个字符时它将滚动。
答案 5 :(得分:6)
将整个活动包含在滚动视图中,并将以下编辑文本放在线性布局中,对我来说就像一个魅力。
编辑文本将自动垂直滚动输入,代码如下
<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" >
答案 6 :(得分:1)
尝试一下,将重力更改为top | left对我有用,连同输入类型textmultiline
<EditText
android:layout_width="200dp"
android:layout_height="match_parent"
android:layout_gravity="center"
android:background="@color/color_red"
android:focusable="true"
android:focusableInTouchMode="true"
android:gravity="top|left"
android:inputType="textMultiLine|textCapSentences"
android:lines="10"
android:maxWidth="200dp"
android:maxLength="200"
android:maxLines="10"
android:singleLine="false"
android:textColor="@android:color/white"
android:textSize="26sp" />
答案 7 :(得分:0)
对于那些务实地执行此操作的人,您可能希望查看此问题Android EditText Multiline does not work as it should 以仔细检查您是否正确设置了输入类型。这是我的问题
答案 8 :(得分:0)
还设置父级布局宽度,(Layout_width属性)。例如 layout_width = 250sp
否则,EditText或TextView不会换行到下一行,直到到达移动边框的末尾。因此,定义Layout_width
答案 9 :(得分:-1)
注意: 第1步 - 为editText wordWrap创建自定义类。
Android没有这个属性。但是你可以用ReplacementTransformationMethod替换所有破碎的字符。
public class WordBreakTransformationMethod extends ReplacementTransformationMethod
{
private static WordBreakTransformationMethod instance;
private WordBreakTransformationMethod() {}
public static WordBreakTransformationMethod getInstance()
{
if (instance == null)
{
instance = new WordBreakTransformationMethod();
}
return instance;
}
private static char[] dash = new char[] {'-', '\u2011'};
private static char[] space = new char[] {' ', '\u00A0'};
private static char[] original = new char[] {dash[0], space[0]};
private static char[] replacement = new char[] {dash[1], space[1]};
@Override
protected char[] getOriginal()
{
return original;
}
@Override
protected char[] getReplacement()
{
return replacement;
}
}
step 2 - In Activity , write below code,
在Android中:
myEditText.setTransformationMethod(WordBreakTransformationMethod.getInstance());
在Kotlin:
myEditText.setTransformationMethod= WordBreakTransformationMethod.getInstance
在Xml中:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<EditText
android:id="@+id/myEditText"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:inputType="textCapSentences|textMultiLine"
android:scrollHorizontally="false" />
</LinearLayout>
答案 10 :(得分:-5)
<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>