我有这个布局:
<?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
输入类型确实有效。
答案 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());