Похоже, вы совершенно правы в этом вопросе;Я попытался поиграть с вашим примером макета и увидел ту же проблему.Я предполагаю, что this - это ваш отчет об ошибке.
Самое простое решение - просто изменить макет, но это, вероятно, не то, что вы хотите сделать.Моя первая попытка обойти это было бы попытаться не устанавливать ни один из этих трех атрибутов в XML, а затем установить их в Java.Если это не сработает ...
Один из вариантов - имитировать подсказку, либо расширив класс EditText и попытавшись исправить код, который излагает подсказку, либо переопределив метод onDraw, чтобы создатьподсказка, или, возможно, просто перекрывая обычный TextView поверх EditText, который вы затем показываете / скрываете вручную.Вы можете даже проверить, пусто ли представление, и если да, установите текст в текст подсказки и измените цвет.Когда представление получает фокус, проверьте, соответствует ли его текст вашей подсказке, и, если это так, удалите текст и измените цвет обратно.
Другой возможный обходной путь, который немного более "хакерский", - это оставитьтри атрибута, которые вызывают проблемы, но попробуйте вручную предотвратить создание новой строки.Вам нужно создать OnKeyListener для вашего EditText, что-то вроде этого:
editText.setOnKeyListener(new OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_ENTER && event.getAction() == KeyEvent.ACTION_DOWN) {
// do nothing
return true;
}
return false;
}
});
Вы также хотели бы вызвать editText.setImeOptions(EditorInfo.IME_ACTION_NEXT)
, чтобы не показывать ключ возврата.Тем не менее, возможно, можно создать новую строку в текстовом поле, вставив в нее или каким-либо другим способом, поэтому вы также захотите проанализировать и удалить новые строки, когда форма отправлена просто для безопасности.Это также вряд ли будет делать то, что вы хотите, насколько горизонтальная прокрутка.