安卓冰激凌三明治EditText:禁用拼写检查和自动换行

43

我在运行Android 4.0(冰淇淋三明治)的Android模拟器上进行测试时,注意到EditText做了一些相当奇怪的事情。

首先,它用红色下划线标记每个被识别为“拼写错误”的单词。如何禁用此功能? 其次,尽管在布局XML中我已经指定了android:scrollHorizontally="true",但启用了自动换行:如何禁用此功能?以下是EditText的布局XML代码:

    <EditText
        android:id="@+id/editor"
        android:layout_width="40dp"
        android:layout_height="fill_parent"
        android:layout_alignParentRight="true"
        android:layout_below="@+id/toolbar"
        android:layout_toRightOf="@+id/toolbarleft"
        android:paddingBottom="0dp"
        android:paddingRight="0dp"
        android:scrollHorizontally="true"
        android:text=""
        android:inputType="textMultiLine" >
        
        <requestFocus />
    </Edittext>

以下是我需要禁用的拼写检查器示例:

拼写检查器演示
(来源:abstract-thoughts.com)

非常感谢!

7个回答

87

禁用拼写检查
为了消除拼写检查,您必须在XML中指定EditText的InputType,如下所示:

android:inputType="textNoSuggestions"

然而,我的EditText还需要多行输入,在EditText的XML中添加了以下行:

android:inputType="textMultiLine|textNoSuggestions"

禁用自动换行
注意,XML属性android:scrollHorizontally="true"不起作用。但是,奇怪的是,如果通过Java完成它,则可以实现无换行。以下是实现无换行的必要代码:

mEditText.setHorizontallyScrolling(true);


1
值得注意的是,在4.4版本中,scrollHorizontally XML属性确实起作用了。不确定这个问题在哪个API级别上得到了修复,但它已经被解决了。 - ian.shaun.thomas

34

禁用EditText中的拼写检查

Android 4.0+中,有时我的TextView会出现红色下划线,因此我添加了以下属性...

android:inputType="textNoSuggestions" 

textNoSuggestions: 用于指示输入法不显示基于字典的任何单词建议。

这是我们可以在android:inputType中定义的可能属性列表。

禁用自动换行

请记住,属性android:scrollHorizontally="true"无效,因此这是解决方案:

mEditText.setHorizontallyScrolling(true);

1
谢谢你的回复。不幸的是,我已经解决了这个问题(如果你看到我所提出的问题,我已经更新它来说明这点)。还是非常感谢你! - Henry Thompson
2
@HenryThompson 在StackOverflow上将两个问题合并成一个是不好的做法。而且你的问题(我刚读到)仍然提出了Elenasys回答的问题。只是你在示例代码中“隐藏”了答案,但没有引起我们的注意,导致我们认为你的代码对你来说不起作用。 - Andrew Arnott
1
@HenryThompson 在你“回答”自己的问题之前,已经有很多答案发布了。 - Jorgesys
@AndrewArnott,如果这违反了StackOverflow的指南,我很抱歉...但是,它们已经被回答了,现在为时已晚。Elenasys的回答只回答了其中一个问题,因此没有被接受-它没有回答关于自动换行的问题,事实上其他回答也没有回答。我也不明白隐藏答案的那一部分是什么意思? - Henry Thompson
@Elenasys 是的,但之前所有的回答都未能令我满意地回答了我的问题,这就是为什么我接受了自己的答案。很抱歉您的答案没有被接受,因为它确实是正确的 - 但是,它只回答了我的问题的一半,这就是为什么它没有被接受的原因。 - Henry Thompson
1
@AndrewArnott 我明白你所说的隐藏答案的意思 - 这不是原来的问题,有人编辑了它...请查看编辑历史记录。我已经将代码恢复到原来的状态,这样更有意义。 - Henry Thompson

9
在Java类中,您可以向Edittext对象添加内容...
  wire1type = (EditText)findViewById(R.id.wire1type);
  wire1type.setInputType( ~(InputType.TYPE_TEXT_FLAG_AUTO_CORRECT) );

此操作将清除自动更正标识,并可在 API 4 中使用。


这是唯一正确的答案。其他答案(“textNoSuggestions”)会产生不良副作用,也会禁用软键盘上的单词预测(例如Swyft Type)。 - zyamys

7
android:inputType="textMultiLine|textPhonetic"

帮我删除了所有红色下划线。

android:inputType="textMultiLine|textNoSuggestions"

编译错误出现了。

我正在使用Android API 1.6版本。


是的,似乎直到后面才支持textNoSuggestions。我的应用程序支持Android 2.1及以上版本,所以这不是问题。 - Henry Thompson

5

通过代码禁用一般文本输入的拼写检查:

mEditText.setInputType(InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS);

0

移除 android:inputType="" 就可以了。


2
抱歉,那是我的错 - 在实际代码中,我已经去掉了 inputType = "",但它没有起任何作用。 - Henry Thompson

0

要禁用换行,您需要使用HorizontalScrollView包装(双关语未打算)EditText并将layout_width设置为match_parent。


我明白你的意思。当我最初开始编写这个应用程序时,我使用了一个ScrollView,但它使我的应用程序变得非常缓慢,所以我想尽可能避免使用它。在Android 4.0上有一种方法可以禁用换行,所有其他版本的Android都支持使用android:scrollHorizontally="true"来实现。如果Google取消了关闭自动换行的功能,我觉得这非常奇怪,是的,我将不得不使用ScrollView。无论如何,非常感谢您的帮助! - Henry Thompson
我已经使用了这个答案,因为在查看周围的情况时,似乎这是唯一的解决方案。因此,我将把它作为答案奖励。但是,如果有人知道更好的方法,请让我知道如何做! - Henry Thompson
关于ICS中ScrollView运行缓慢的问题:尝试在清单文件中禁用硬件加速。对我很有效。 - André Restivo
慢TextView滚动的相关问题:https://dev59.com/VGfWa4cB1Zd3GeqPjKlz - ian.shaun.thomas

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接