EditText自动换行

时间:2014-10-05 18:44:17

标签: android android-edittext textview

我有这个布局:

<?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上测试过。

编辑添加了完整的布局。

EDIT2:

对不起,这是我的错。我在代码中以编程方式更改输入类型:

mEditText.setInputType(mInputTypes.get(question.getType()));

所以使用这一行,我已经覆盖了xml的输入类型。我修改了代码,multiLine输入类型确实有效。

3 个答案:

答案 0 :(得分:7)

我删除了所有不必要的属性,只放置了必需属性android:maxLines =&#34; 20&#34;,

所以它看起来像这样,

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

答案 1 :(得分:2)

android:scrollHorizontally="false" from this post on SO

中添加android:inputType="textMultiLine"EditText此属性
<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" />

答案 2 :(得分:0)

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

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