我对这个功能非常失望。 我尝试了几乎所有可以找到的东西来启用这些 EditTexts 多行, 但他们只是继续在一行上滚动整个 EditText。
停在 EditText 边框的末尾并移动到下一行有多难?
我有一个带有 EditText 和 2 个按钮的 Activity 。这些按钮之一将预定的文本行添加到 EditText。另一个将 EditText 的文本放入我稍后在应用程序中使用的某种形式的对象中。
但是我无法使用此多行功能。我已经尝试限制大小。设置多行标志。禁用单线。给 lines 和 minLines 一个随机数 (10)。 禁用 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>
它萦绕在我的梦中......
编辑:> 隧道尽头的光。
虽然我专注于 xml.. 一个新的干净项目向我指出 EditText textMessage = (EditText)findViewById(R.id.callofedittext); textMessage.setInputType(InputType.TYPE_TEXT_FLAG_MULTI_LINE | InputType.TYPE_TEXT_FLAG_CAP_SENTENCES);
导致了我所有的问题。不具体是 xml 中的属性。
最佳答案
从这里comment ,inputType 也在代码中设置为:
textMessage.setInputType(InputType.TYPE_TEXT_FLAG_MULTI_LINE |
InputType.TYPE_TEXT_FLAG_CAP_SENTENCES);
这实际上是不正确的,因为 TYPE_TEXT_FLAG_MULTI_LINE
和 TYPE_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);
有关这些标志如何工作的官方详细信息,请参阅 InputType 上的 Android 开发人员文档和 TextView - android:inputType
我不确定为什么设计决策是这样的。就我个人而言,我认为他们应该隐藏他们如何表示他们的标志(如整数/位标志),而是为他们的公共(public)接口(interface)使用枚举和/或 InputType 的子类。
关于Android EditText Multiline 无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25294498/