Android EditText Multiline 无法正常工作

标签 android android-edittext

我对这个功能非常失望。 我尝试了几乎所有可以找到的东西来启用这些 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_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);

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

我不确定为什么设计决策是这样的。就我个人而言,我认为他们应该隐藏他们如何表示他们的标志(如整数/位标志),而是为他们的公共(public)接口(interface)使用枚举和/或 InputType 的子类。

关于Android EditText Multiline 无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25294498/

相关文章:

安卓.view.WindowManager$BadTokenException : Unable to add window -- token null is not for an application-(in Edit Text)

android - 使 EditText 接受并显示 HTML 格式的文本

android - 如何将 EditText 长度限制为 7 个整数和 2 个小数位?

android - 更新Android中特定布局的DrawingCache

android - 错误 :Cause: zip file is empty Android studio 0. 8.14

java - 我们可以在edittext中有不可编辑的文本吗

android - 使用幻灯片菜单 : sliding back and padding don't work

android - Fragment的onActivityCreated中getActivity返回null

android - 动画 ImageView 的位图位置

java - 我在 android 上通过 bitmapToMat 得到了 CvException