EditText自动换行

4

我有这个布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@id/container"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:padding="@dimen/activity_horizontal_margin" >

    <LinearLayout
        android:id="@+id/header"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <EditText
        android:id="@+id/editText"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />
</LinearLayout>

当用户输入的文本超过单行文本框容纳的文字时,我希望EditText可以自动换行并且高度随之增加,未能容纳在第一行的文本应该出现在下一行。但是EditText不应该水平滚动。
我查看了很多相关问题,但是没有一个可以解决我的问题。目前,以上的EditText无法自动换行,并且可以水平滚动。我已经在Android 4.2和4.4上测试过。 编辑:完整布局已添加。 编辑2: 对不起,这是我的错。我在代码中以程序方式更改了输入类型。
mEditText.setInputType(mInputTypes.get(question.getType()));

使用这行代码,我重写了来自xml的输入类型。我修改了代码,并且multiLine输入类型确实起作用了。
3个回答

10

我已经删除了所有不必要的属性,只保留了所需的属性android:maxLines="20",

因此它看起来像这样,

    <EditText
    android:id="@+id/editText"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:inputType="textMultiLine"
    android:maxLines="20" />

谢谢你的回答!我也尝试了同样的方法,但还是不起作用。:( - WonderCsabo
请发布您完整的XML。 - Chitrang
谢谢,它确实可行(请看我在原帖中的编辑)。这里需要的属性实际上是inputType - WonderCsabo
哦,抱歉,我删掉了那个。很高兴你解决了问题。 - Chitrang

3

EditText中添加以下属性:android:scrollHorizontally="false"android:inputType="textMultiLine",参考这个SO讨论帖

<EditText
    android:id ="@+id/editText"
    android:layout_width ="0dip" 
    android:layout_height ="wrap_content" 
    android:layout_weight ="1" 
    android:inputType="textCapSentences|textMultiLine"
    android:maxLines ="4" 
    android:maxLength ="2000"
    android:scrollHorizontally="false" />

0

对我有效的唯一解决方案:

EditText someedittext = (EditText)findViewById(R.id.someedittext);
someedittext.setMaxWidth(someedittext.getWidth());

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接