焦点を当てていないときにスペルチェック:アンドロイド6.0/Nexus 5のオン赤い下線を無効にする/ TextViewには、私はこのように構成されたTextViews持っ
android:inputType="textMultiLine|textImeMultiLine|textAutoCorrect"
をテキスト(自動修正、提案を入力するときに入力すると、すべてが正常に動作します、など)、編集が完了してTextViewにフォーカスがない場合、スペルの間違った単語には醜い赤い下線が付きます。どうやってそれらを取り除くのですか?
Stack Overflowでthis oneのような質問がありましたが、テキストビューにフォーカスが当たっている間に入力すると、赤い下線が削除されるため、オートコレクションが中断されるため、textNoSuggestions
を追加することはできません。
私はまた、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);
}
}
});
[UPDATE 1]私はEditText
の私のサブクラスがコンストラクタでsetOnFocusChangeListener()
を呼び出していることに気づきました(これが動作することを確認しました)、ユーザがテキストビューでテキストの編集を開始または終了するたびに(つまり、キーボードが表示されているか隠されているかを示す)、onFocusChange()
への呼び出しは発生しません。
[UPDATE 2] onFocusChange()
が呼び出されなかった理由を、私は考え出し:setOnFocusChangeListener()
はそれを上書き、同じTextViewの上と呼ばれていたアプリ内の別の場所があったが判明しました。現在は機能していますが、setInputType()
を呼び出してフォーカスを外してからTYPE_TEXT_FLAG_NO_SUGGESTIONS
を設定しても効果はありません。赤い線が表示されたままです。正確には、XMLにtextNoSuggestions
を設定するか設定しないと効果がありますが、これをプログラムでオーバーライドしようとすると、onFocusChange()
の効果はありません。
感謝を追加する必要が正しい取り組んでいます。私はあなたの提案を試みたが、まだそれを動作させることができない:私の質問の更新を参照してください。 – Pol
EditorInfoの代わりに@Polを使用するInputType –
'EditorInfo'は' InputType'を実装しているので、値は同じです。違いはありません。 – Pol