- Как удалить подчеркивание из поля EditText в Android?
- 9 ответов
- Как скрыть подчеркивание в EditText
- 25 ответов
- Как удалить подчеркивание из поля EditText в Android?
- Как удалить подчеркивание ниже индикатора EditText?
- EditText
- Plain Text
- Person Name
- Password и Password (Numeric)
- Phone
- Postal Address
- Multiline Text
- Time и Date
- Number, Number (Signed), Number (Decimal)
- Текст-подсказка
- Вызов нужной клавиатуры
- Интерфейс InputType
- Атрибут android:imeOptions — параметры для текущего метода ввода
- Заблокировать текстовое поле
- Другие свойства
- Методы
- Выделение текста
- Обработка нажатий клавиш
- Пустой ли EditText
- Превращаем EditText в TextView
- Дополнительное чтение
Как удалить подчеркивание из поля EditText в Android?
всякий раз, когда слово вводится в поле EditText, я всегда вижу подчеркивание под вводимым словом. Но когда я нажимаю пробел после этого слова я больше не вижу подчеркивание.
мой запрос должен удалить это подчеркивание, когда пользователь вводит сообщение.
добавлен скриншот, и мы видим, что Смит подчеркнут. Но я не хочу, чтобы это произошло.
Ниже приведен xml, который я использую для AlertDialog коробка.
9 ответов
вам не нужно использовать логику для удаления подчеркиваний — просто вызовите getText ().метод toString (), когда вы хотите использовать значение. Оно не включало специального форматирования или ничего.
существует функция, которая удаляет любое состояние составления. Я думаю, если вы назовете его после каждого типа пользователя, вы не увидите подчеркивания. Я использую его после того, как пользователь закончит печатать, чтобы получить кэш рисования всего textView (который мне нужен без подчеркивания). Это
принятый ответ не дается решение, и какой-то другой пользователь дал ответ, но никто не дал полный anser, поэтому я пишу здесь рабочее решение.
Если вы хотите удалить подчеркивание, тогда просто добавьте ниже код.
Если вы хотите установить более одного типа ввода, то,
может быть выше информация полезна для другие.
используйте это из своего класса, если представление EditText является динамическим (созданным из файла класса):
или включить android:inputType=»textNoSuggestions» С вашим EditText в XML.
лучшее решение для этого-добавить на свой EditText :
Источник
Как скрыть подчеркивание в EditText
Как я могу скрыть подчеркивание EditText (строка подсказки с маленькими засечками на концах)?
Возможно, есть лучший способ сделать то, что я хочу: у меня есть макет с EditText. Обычно это отображается нормально, когда пользователь может нажать на него и начать вводить или редактировать текст.
Однако иногда мне хотелось бы использовать один и тот же макет (упрощающий другую логику) для отображения одних и тех же данных только для чтения. Я хочу, чтобы презентация была похожей — она должна иметь одинаковую высоту и одинаковый шрифт, но без подчеркивания.
В качестве временной меры я собираюсь реализовать это, удалив EditText и заменив TextView. Я думаю, что это даст желаемые результаты, но кажется окольным дорогостоящим способом сделать что-то, что должно быть легко сделать, изменив атрибуты.
25 ответов
Вы можете настроить EditText на пользовательский прозрачный способ рисования или просто использовать
Я обнаружил самое любопытное! Если вы установите его на null с помощью привязки данных: android:background=»@
Тогда не только удаляется фон, но и в представлении сохраняется отступ, рассчитанный на основе фона по умолчанию. Итак, по какой-то причине параметр deferred null не очищает отступ из предыдущего bg . Отступ в представлении — левый / верхний / правый 4dp, нижний 13dp (с уровня эмулятора 21).
Может не иметь одинаковых конечных результатов на всех уровнях API, поэтому будьте осторожны! Кто-нибудь скажет мне, если вы проверите это и сочтете это надежным. (Также обратите внимание, что нижний отступ выступает из-за того подчеркивания, которое было в оригинале. Так что вы, вероятно, захотите изменить его в XML или сбросить его в коде после его загрузки, чтобы он стал равным верхнему .
У меня есть что-то вроде этого, что очень-очень полезно:
Где generalEditText — мой EditText, а белый цвет:
Это не удалит отступы, и ваш EditText останется как есть. Будет удалена только линия внизу. Иногда бывает полезнее сделать так.
Если вы используете android:background=»@null» столько, сколько предлагалось, вы потеряете заполнение, и EditText станет меньше. По крайней мере, так было в моем случае.
Небольшое примечание: если вы установите background null и попробуете java-код, который я предоставил выше, ваше приложение выйдет из строя сразу после его выполнения. (потому что он получает фон, но он равен нулю). Это может быть очевидно, но я думаю, что это важно.
Вы также должны установить minWidth, иначе курсор исчезнет, если текст будет пустым.
Если вы используете EditText внутри TextInputLayout , используйте app:boxBackgroundMode=»none» следующим образом:
В моем случае я использовал собственный фон для редактирования текста, поэтому установка фона на @null или установка оттенка на прозрачный не были для меня решением, поэтому я сыграл небольшой трюк, который очень хорошо сработал для меня, я просто установил
И он выполняет свою работу очень хорошо . это не оптимальное решение, но оно работает
Вот способ скрыть это, не повредив отступы по умолчанию:
Если вы обнаружите, что всегда передаете null, вы можете кодировать это в методе (а затем вы можете также перегрузить сам EditText)
Используя любое свойство:
Работал у меня, чтобы скрыть подчеркивание EditText.
Однако обратите внимание, что тогда это вызывает проблему с интервалом в TextInputLayout, который я окружил EditText
Я создал фигуру, которую можно рисовать, и установил ее в качестве фона:
Примечание. На самом деле я использовал значения @dimen и @color для firelds, но для ясности здесь я упростил шейп-файл.
Вы можете сделать это программно, используя setBackgroundResource :
Пожалуйста, установите свой фон для редактирования текста как
Это будет работать.
Вы можете установить значение backgroundTint EditText на определенный цвет. Если вы установите прозрачный цвет, подчеркивание должно исчезнуть.
Но вы можете использовать это в Api v21(Lollipop) или выше
Установите для фона значение null.
Другой вариант, вы можете создать свой собственный EditText следующим образом:
Чтобы сохранить поля и цвет фона, используйте:
Если вы используете фон, вы должны использовать этот тег
В моем случае лучше всего подходит editText.setBackgroundResource(R.color.transparent); .
Он не удаляет отступы по умолчанию, только под панелью.
Источник
Как удалить подчеркивание из поля EditText в Android?
Всякий раз, когда слово вводится в поле EditText, я всегда вижу подчеркивание под введенным словом. Но когда я нажимаю пробел после этого слова, я больше не вижу подчеркивания.
Мой запрос заключается в том, чтобы удалить это подчеркивание, когда пользователь вводит сообщение.
Добавлен скриншот, и мы видим, что Смит подчеркивается. Но я не хочу, чтобы это произошло.
Ниже представлен xml, который я использую для окна AlertDialog.
Вам не нужно использовать какую-либо логику для удаления подчеркиваний – просто вызовите getText (). ToString (), когда вы хотите использовать значение. Он не будет включать специальное форматирование или что-то еще.
Существует функция, которая удаляет любое состояние компоновки. Я думаю, что если вы вызываете его каждый раз, когда пользователь вводит его, вы не увидите подчеркивания. Я использую его после того, как пользователь заканчивает ввод, чтобы получить кеш-файл для всего текста (который мне нужен без подчеркивания). Это
Принятый ответ не получил решения, а другой пользователь дал ответ, но никто не дал полный ансер, поэтому я пишу здесь рабочее решение.
Если вы хотите удалить подчеркивание, просто добавьте код ниже.
Если вы хотите установить более одного типа ввода,
Может быть выше информации полезно другим.
Используйте это из своего класса, если представление EditText является динамическим (создается из файла класса):
Источник
Как удалить подчеркивание ниже индикатора EditText?
Недавно мне пришлось изменить цвет индикатора EditText, и после этого над индикатором появилась странная строка. Как я могу удалить это? Код для того, что я сделал, ниже.
Сделайте такой фон
android:background=»@null» вашего editText
Используйте edittext.clearComposingText(); до getText() или в .xml , вы можете использовать android:inputType=»text|textNoSuggestions»
установите цвет background EditText на белый.
Вы можете установить цвет фона вашего экрана на EditText фон, если оба цвета фона фона и цвет фона EditText совпадают с обозначением EditText подчеркивание не будет видно.
программно я сделал это так:
Android: фон = “@андроид: цвет/прозрачный”
Если вы используете компоненты материала TextInputLayout , установка цвета фона на что-то другое не удаляет подчеркивание, решение состоит в том, чтобы установить BoxBackgroundMode следующим образом (kotlin): myTextInputLayout.boxBackgroundMode = TextInputLayout.BOX_BACKGROUND_NONE
или в xml: app:boxBackgroundMode=»none»
Я думаю, что это изменение в компоненте было сделано, чтобы подчеркнуть “работу” с пользовательским цветом фона
setColorFilter() не работает на уровнях API 5 и ниже. Один из способов – использовать setBackgroundColor(TRANSPARENT color) и использовать clearColorFilter() , чтобы удалить его.
Вы также можете определить STYLE для вашего editText, чтобы вы могли перегруппировать все общие свойства. Это очень мощно, если вам нужно многократно редактировать текст, который должен иметь поведение
Поместите код в res/values /styles.xml
После этого вам просто нужно вызвать его в вашем editText
У меня была такая же проблема, как показано на скриншоте ОП. Решения, описанные в принятом ответе, просто убирают подчеркивание, которое вы хотели настроить. Было бы хорошо унаследовать стиль от Widget.AppCompat.EditText но не от темы. Исправление заключается в удалении наследования из вашего CustomEditText:
Кредиты идут на этот ответ
Если android:background=»@null» не помогает – попробуйте объединить его с android:inputType=»text|textNoSuggestions»
Источник
EditText
Компонент EditText — это текстовое поле для пользовательского ввода, которое используется, если необходимо редактирование текста. Следует заметить, что EditText является наследником TextView.
В Android Studio на панели инструментов текстовые поля можно найти в категории Texts под разными именами.
Для быстрой разработки текстовые поля снабдили различными свойствами и дали разные имена: Plain Text, Person Name, Password, Password (Numeric), E-mail, Phone, Postal Address, Multiline Text, Time, Date, Number, Number (Signed), NumberDecimal.
Plain Text
Plain Text — самый простой вариант текстового поля без наворотов. При добавлении в разметку его XML-представление будет следующим:
Person Name
При использовании элемента Person Name в XML добавляется атрибут inputType, который отвечает за вид клавиатуры (только буквы) при вводе текста.
Password и Password (Numeric)
При использовании Password в inputType используется значение textPassword. При вводе текста сначала показывается символ, который заменяется на звёздочку. Если используется элемент Password (Numeric), то у атрибута inputType используется значение numberPassword. В этом случае на клавиатуре будут только цифры вместо букв. Вот и вся разница.
У элемента E-mail используется атрибут android:inputType=»textEmailAddress». В этом случае на клавиатуре появляется дополнительная клавиша с символом @, который обязательно используется в любом электронном адресе.
Phone
У элемента Phone используется атрибут android:inputType=»phone». Клавиатура похожа на клавиатуру из старого кнопочного сотового телефона с цифрами, а также с кнопками звёздочки и решётки.
Postal Address
Multiline Text
У Multiline Text используется атрибут android:inputType=»textMultiLine» позволяющий сделать текстовое поле многострочным. Дополнительно можете установить свойство Lines (атрибут android:lines), чтобы указать количество видимых строк на экране.
Time и Date
Атрибут android:inputType=»time» или android:inputType=»date». На клавиатуре цифры, точка, запятая, тире.
Number, Number (Signed), Number (Decimal)
Атрибут android:inputType=»number» или numberSigned или numberDecimal. На клавиатуре только цифры и некоторые другие символы.
Текст-подсказка
Веб-мастера знают о таком атрибуте HTML5 как placeholder, когда в текстовом поле выводится строчка-подсказка приглушенным (обычно серым цветом). Живой пример приведён ниже.
Подсказка видна, если текстовый элемент не содержит пользовательского текста. Как только пользователь начинает вводить текст, то подсказка исчезает. Соответственно, если удалить пользовательский текст, то подсказка появляется снова. Это очень удобное решение во многих случаях, когда на экране мало места для элементов.
В Android у многих элементов есть свойство Hint (атрибут hint), который работает аналогичным образом. Установите у данного свойства нужный текст и у вас появится текстовое поле с подсказкой.
Запускаем приложение и видим подсказку, которая исчезает при попытке ввести текст.
Вызов нужной клавиатуры
Не во всех случаях нужна стандартная клавиатура с буковками и цифрами. Если вы пишете калькулятор, то проще показать пользователю цифровую клавиатуру. А если нужно ввести электронный адрес, то удобнее показать клавиатуру, где уже есть символ @. Ну а если ваше приложение пишется для котов, то достаточно вывести только те буквы, из которых можно составить слова Мяу и Жрать давай (к сожалению, такой клавиатуры ещё нет, но Google работает в этом направлении).
У элемента EditText на этот случай есть атрибут inputType:
В данном случае с атрибутом inputType=»textCapWords" каждый первый символ каждого слова при вводе текста автоматически будет преобразовываться в прописную. Удобно, не так ли?
Значение textCapSentences делает прописным каждый первый символ предложения.
Если вам нужен режим CapsLock, то используйте значение textCapCharacters и все буквы сразу будут большими при наборе.
Для набора телефонного номера используйте phone, и тогда вам будут доступны только цифры, звёздочка (*), решётка (#).
Для ввода веб-адресов удобно использовать значение textUri. В этом случае у вас появится дополнительная кнопочка .com (при долгом нажатии на нее появятся альтернативные варианты .net, .org и др.).
Вот вам целый список доступных значений (иногда различия очень трудно различимы)
Интерфейс InputType
Кроме использования атрибута android:inputType мы можем добиться нужного поведения от текста при помощи интерфейса InputType.
Атрибут android:imeOptions — параметры для текущего метода ввода
У текстовых полей есть атрибут android:imeOptions, с помощью которого настраиваются параметры для текущего метода ввода. Например, когда EditText получает фокус и отображается виртуальная клавиатура, эта клавиатура содержит кнопку «Next» (Далее), если атрибут android:imeOptions содержит значение actionNext. Если пользователь касается этой кнопки, фокус перемещается к следующему компоненту, который принимает пользовательский ввод. Если компонент EditText получает фокус и на виртуальной клавиатуре появляется кнопка «Done» (Готово), значит использовался атрибут android:imeOptions со значением actionDone. Как только пользователь касается этой кнопки, система скрывает виртуальную клавиатуру.
Заблокировать текстовое поле
Для блокировки текстового поля присвойте значения false свойствам Focusable, Long clickable и Cursor visible.
Другие свойства
Методы
Основной метод класса EditText — getText(), который возвращает текст, содержащийся в текстовом поле. Возвращаемое значение имеет специальный тип Editable, а не String.
Соответственно, для установки текста используется метод setText().
В Kotlin может возникнуть проблема, если программист захочет использовать конструкцию присвоения через свойство.
Большинство методов для работы с текстом унаследованы от базового класса TextView: setTypeface(null, Typeface), setTextSize(int textSize), SetTextColor(int Color).
Выделение текста
У EditText есть специальные методы для выделения текста:
- selectAll() — выделяет весь текст;
- setSelection(int start, int stop) — выделяет участок текста с позиции start до позиции stop;
- setSelection(int index) — перемещает курсор на позицию index;
Предположим, нам нужно выделить популярное слово из трёх букв в большом слове (это слово «кот», а вы что подумали?).
Ещё есть метод setSelectAllOnFocus(), который позволяет выделить весь текст при получении фокуса.
Обработка нажатий клавиш
Для обработки нажатий клавиш необходимо зарегистрировать обработчик View.OnKeyListener, используя метод setOnKeyListener() элемента EditText. Например, для прослушивания события нажатия клавиши Enter во время ввода текста пользователем (или котом), используйте следующий код:
Пустой ли EditText
Чтобы проверить, пустой ли EditText, можно воспользоваться кодом:
Также можно проверять длину текста, если она равно 0, значит текст пуст.
Превращаем EditText в TextView
Практического смысла тут нет, но для общего развития превратим текстовое поле в текстовую метку. Для этого нужно сделать компонент недоступным, убрать курсор, установить прозрачный фон и отключить слушатель нажатий клавиш.
Также можно установить эти свойства через XML, кроме последнего пункта.
Дополнительное чтение
Beware EditText on API 21 — разница между версиями 21 и 22
Источник