我EditText
通过扩展创建了一个自定义android.widget.EditText
.
我希望只有在EditText
有焦点时才能看到自动更正的跨度。所以我调用setInputType(INPUT_NO_FOCUS);
构造函数并:
@Override
protected void onFocusChanged(boolean focused, int direction, Rect previouslyFocusedRect) {
super.onFocusChanged(focused, direction, previouslyFocusedRect);
if (focused) {
setInputType(INPUT_FOCUS);
} else {
setInputType(INPUT_NO_FOCUS);
}
}
和:
private final int INPUT_NO_FOCUS = TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_MULTI_LINE
| InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS;
private final int INPUT_FOCUS = TYPE_CLASS_TEXT | TYPE_TEXT_FLAG_MULTI_LINE
| InputType.TYPE_TEXT_FLAG_AUTO_CORRECT | InputType.TYPE_TEXT_FLAG_AUTO_COMPLET;
==> 确实没有自动更正和自动完成,但是点击后没有出现EditText
。输入类型更改成功。
如何触发自动更正/添加自动完成?
//编辑:
我要存档的用户案例:
MyEditText extends EditText
视图显示且未聚焦。文本没有拼写检查(-->文本下没有红色跨度/线条)用户点击进入编辑字段。--> 触发拼写检查 --> 出现红线(用户可以点击拼写错误的单词并让操作系统更正它们)
用户单击另一个视图元素 --> 红线/跨度消失。