我的TextViews配置如下:
android:inputType="textMultiLine|textImeMultiLine|textAutoCorrect"
在Android 6.0 / Nexus 5上,输入文本时一切正常(自动更正,键入时的建议等等),但是当完成编辑并且TextView不再处于焦点时,任何拼写错误的单词都很难看红色下划线。你怎么摆脱它们?
我已经在Stack Overflow上阅读了this one之类的问题,但添加textNoSuggestions
的建议是不可接受的,因为它会删除红色下划线,但在文本视图聚焦时会在您键入时中断自动更正。 / p>
我也尝试在TextView上使用焦点更改侦听器,但它似乎不起作用:
setOnFocusChangeListener(new TextView.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (hasFocus) {
setInputType(EditorInfo.TYPE_TEXT_FLAG_MULTI_LINE | EditorInfo.TYPE_TEXT_FLAG_IME_MULTI_LINE | EditorInfo.TYPE_TEXT_FLAG_AUTO_CORRECT);
} else {
setInputType(EditorInfo.TYPE_TEXT_FLAG_MULTI_LINE | EditorInfo.TYPE_TEXT_FLAG_IME_MULTI_LINE);
}
}
});
[更新1] 我意识到我的EditText
子类在构造函数中调用了setOnFocusChangeListener()
(我验证了这个工作原理),并没有触发对{{}的调用每当用户在文本视图中开始或结束编辑文本时(这意味着当键盘显示或隐藏时)。
[更新2] 我想为什么onFocusChange()
没有被调用:原来应用程序中有另一个地方在同一个TextView上调用了onFocusChange()
,压倒它。它现在可以使用了,但是在未对焦时调用setOnFocusChangeListener()
取消设置setInputType()
无效:红线仍然可见。确切地说,在XML中设置或不设置TYPE_TEXT_FLAG_NO_SUGGESTIONS
会产生影响,但尝试从textNoSuggestions
内以编程方式覆盖它无效。
答案 0 :(得分:1)
您的代码工作正常,只需添加以下行
在您的活动中调用setInputType(EditorInfo.TYPE_TEXT_FLAG_NO_SUGGESTIONS)
示例代码
tv.setOnFocusChangeListener(new TextView.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (hasFocus) {
tv.setInputType(EditorInfo.TYPE_TEXT_FLAG_MULTI_LINE | EditorInfo.TYPE_TEXT_FLAG_IME_MULTI_LINE | EditorInfo.TYPE_TEXT_FLAG_AUTO_CORRECT);
} else {
tv.setInputType(EditorInfo.TYPE_TEXT_FLAG_NO_SUGGESTIONS | EditorInfo.TYPE_TEXT_FLAG_MULTI_LINE | EditorInfo.TYPE_TEXT_FLAG_IME_MULTI_LINE);
}
}
});