Android EditText Multiline无法正常工作

时间:2014-08-13 19:25:28

标签: android android-edittext

我对此功能非常绝望。 我尝试了几乎所有的东西,以使这些EditTexts多线启用, 但他们只是继续用一条线来滚动整个EditText。

停止在EditText边框的末尾并移动到下一行有多难?

我有一个EditText和2个按钮的活动。其中一个按钮将预定的文本行添加到EditText。另一个将EditText的文本放入某种形式的对象中,稍后我会在应用程序中使用它。

但是我不能让这个多线功能工作..我试过限制大小。设置多行标志。禁用单行。给行和minLines一个随机数(10)。 禁用horizo​​ntals滚动EditText。但没有任何作用......

谁能告诉我,我到底做错了什么?我怎么能解决这个可怕的EditText憎恶。

这就是我现在的噩梦。

    <EditText
        android:id="@+id/callofedittext"
        android:layout_width="wrap_content"
        android:inputType="textMultiLine"
        android:width="300dp"
        android:minLines="10"
        android:layout_height="wrap_content"
        android:gravity="top|left"
        android:textColor="@color/textWhite"
        android:background="@color/textBlack"
        android:paddingLeft="3dp"
        android:singleLine="false"
        android:scrollHorizontally="false"

        >

        <requestFocus />
    </EditText>

它困扰着我的梦想......

编辑:&gt;在隧道尽头发光。

虽然我专注于xml ..一个新的干净项目向我指出EditText textMessage = (EditText)findViewById(R.id.callofedittext); textMessage.setInputType(InputType.TYPE_TEXT_FLAG_MULTI_LINE | InputType.TYPE_TEXT_FLAG_CAP_SENTENCES);导致了我的所有问题。不是特别是xml中的属性。

3 个答案:

答案 0 :(得分:21)

从这个comment开始,inputType也在代码中设置:

textMessage.setInputType(InputType.TYPE_TEXT_FLAG_MULTI_LINE |
                         InputType.TYPE_TEXT_FLAG_CAP_SENTENCES);

这实际上不正确,因为TYPE_TEXT_FLAG_MULTI_LINETYPE_TEXT_FLAG_CAP_SENTENCES只是标志,并且不包含实际的输入类型。为了使它们起作用,它们必须在InputType.TYPE_CLASS_TEXT之上作为标记分层。如果没有此类型类标志,则编辑文本没有用于应用标志的基本输入类型类,并且默认为没有指定的输入类型。

因此,使用这两个标志设置输入类型的正确方法是:

textMessage.setInputType(InputType.TYPE_CLASS_TEXT |
                         InputType.TYPE_TEXT_FLAG_MULTI_LINE |
                         InputType.TYPE_TEXT_FLAG_CAP_SENTENCES);

有关这些标记如何工作​​的官方详细信息,请参阅InputTypeTextView - android:inputType上的Android开发人员文档

我不确定为什么设计决定是这样的。就个人而言,我认为他们应该隐藏它们如何表示它们的标志(作为int / bit标志),而是为它们的公共接口设置了InputType的枚举和/或子类。

答案 1 :(得分:6)

嘿,你必须在xml文件中添加以下代码..

android:gravity="top"
android:maxLines="4"
android:inputType="textMultiLine"
android:scrollbars="vertical"
android:textSize="16sp"
android:padding="10dp"

你必须把活动文件......

edtComment = (EditText) findViewById(R.id.edtComment);
edtComment.setMovementMethod(new ScrollingMovementMethod());

这对我有用,希望它对你有用.....

答案 2 :(得分:0)

您是否尝试过使用

android:layout_height="wrap content"

而不是

android:layout_height="match_parent"