Я пытаюсь сделать что-то похожее на этот пост (Как удалить автоматическое подчеркивание Android в EditText?), где я хочу удалить подчеркивание, пока пользователь печатает. Я делаю форматированный текстовый редактор и не хочу, чтобы подчеркивания автозаполнения были перепутаны с подчеркиваниями, которые являются частью форматированного текста.
У меня есть RichTextEditor (который представляет собой редактор форматированного текста, который расширяет AppCompatEditText) и с внутренним классом RichTextEditorTextWatcher. Я делаю RichTextEditor.this.clearComposingText()
каждый раз, когда пользователь печатает, потому что я не хочу видеть подчеркивание, когда пользователь печатает.
Проблема: когда я удаляю строку MyEditText.this.setInputType(InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS);
, каждый раз, когда пользователь вводит текст, предложение всего слова добавляется как часть любого ввода, что совершенно неправильно.
например когда я набираю «A», затем «d», затем «e», я получаю «AAdAde» в тексте редактирования.
Вставка RichTextEditor.this.clearComposingText();
в beforeTextChanged
тоже не работает.
Что мне нужно, так это удаление подчеркивания автозаполнения с сохранением другого поведения (т.е. мне нужен textMultiline и т. д., как в моем атрибуте inputType в XML).
Как я могу это исправить?
ПРИМЕЧАНИЕ. Эта проблема с появлением подчеркивания автозаполнения возникает только в ОС 4.4 (Samsung Galaxy S4). Похоже, что android:inputType="textNoSuggestions"
не влияет на эту версию Android, но работает на более поздних версиях Android.
public class RichTextEditor extends AppCompatEditText
{
public class RichTextEditorTextWatcher implements TextWatcher
{
@Override
public void afterTextChanged(Editable e)
{
//other implementation not shown here
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count)
{
RichTextEditor.this.clearComposingText();
RichTextEditor.this.setInputType(InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS);
}
}
}
<com.my.app.RichTextEditor android:id="@+id/rich_text_editor"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:focusable="true"
android:focusableInTouchMode="true"
android:gravity="top"
android:imeOptions="flagNoExtractUi"
android:inputType="textMultiLine|textCapSentences|textLongMessage|textNoSuggestions"
android:isScrollContainer="true"
android:minHeight="100dp"
android:scrollbarAlwaysDrawVerticalTrack="true"
android:scrollbars="vertical" />
Я пробовал предложения здесь: http://charlesharley.com/2011/programming/disabling-android-textview-suggestions, но они не работают на Samsung Galaxy S4. то есть следующее не работает:
<TextView android:inputType="textVisiblePassword" />
<TextView android:inputType="textFilter" />