В моем приложении для Android у меня другое место, EditText
где пользователь может вводить информацию. Но мне нужно заставить пользователя писать заглавными буквами. Вы знаете функцию для этого?
android
android-edittext
uppercase
Наташа
источник
источник
edittext.setFilters(new InputFilter[] {new InputFilter.AllCaps()});
хоть.maxLength
), Пытаются присоединитьInputFilter.AllCaps()
кeditText.getFilters
массиву. См. Stackoverflow.com/a/18934659/3890983editText.filters = editText.filters + InputFilter.AllCaps()
editText.filters += InputFilter.AllCaps()
Котлин замечательный! <3Если вы хотите
заставить пользователя писатьзаглавными буквами по умолчанию в вашем EditText, вам просто нужно добавитьandroid:inputType="textCapCharacters"
. (Пользователь все еще может вручную перейти на строчные буквы.)источник
Установите
input type
значениеTYPE_CLASS_TEXT| TYPE_TEXT_FLAG_CAP_CHARACTERS
.keyboard
Должны соблюдать это.источник
Вы можете использовать два способа.
Первый способ:
Установите
android:inputType="textCapSentences"
на свой EditText.Второй способ:
Когда пользователь вводит номер, вы должны использовать средство просмотра текста и менять строчные буквы на заглавные.
edittext.addTextChangedListener(new TextWatcher() { @Override public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) { } @Override public void beforeTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) { } @Override public void afterTextChanged(Editable et) { String s=et.toString(); if(!s.equals(s.toUpperCase())) { s=s.toUpperCase(); edittext.setText(s); edittext.setSelection(edittext.length()); //fix reverse texting } } });
источник
Вы можете добавить
android:textAllCaps="true"
свойство в свой XML-файл в EditText. Это приведет к тому, что клавиатура softinput будет отображаться в режиме заглавных букв. Введенное вами значение будет отображаться в верхнем регистре. Однако это не гарантирует, что пользователь сможет вводить толькоUpperCase
буквы. Если они хотят, они все равно могут вернуться к строчным буквам. Если вы хотите, чтобы выходные данные былиEdittext
заглавными, вам нужно вручную преобразовать входную строку с помощьюtoUpperCase()
методаString
класса.источник
android:textAllCaps="true"
является только свойством TextView ( stackoverflow.com/a/28803492/5268730 ).android:inputType="textCapCharacters"
Вместо этого используйте .Вы должны поместить
android:inputType="textCapCharacters"
Edittext в файл xml.источник
Вместо того, чтобы беспокоиться о работе с клавиатурой, почему бы просто не принять любой ввод в нижнем или верхнем регистре и не преобразовать строку в верхний регистр?
Следующий код должен помочь:
EditText edit = (EditText)findViewById(R.id.myEditText); String input; .... input = edit.getText(); input = input.toUpperCase(); //converts the string to uppercase
Это удобно, поскольку пользователю не нужно знать, что вам нужна строка в верхнем регистре. Надеюсь это поможет.
источник
Еще лучше ... один лайнер в Котлине ...
// gets your previous attributes in XML, plus adds AllCaps filter <your_edit_text>.setFilters(<your_edit_text>.getFilters() + InputFilter.AllCaps())
Выполнено!
источник
<your_edit_text>.filters = <your_edit_text>.filters + InputFilter.AllCaps()
<your_edit_text>.filters += InputFilter.AllCaps()
Использовать входной фильтр
editText = (EditText) findViewById(R.id.enteredText); editText.setFilters(new InputFilter[]{new InputFilter.AllCaps()});
источник
В котлине , в файле .kt внесите изменения:
edit_text.filters = edit_text.filters + InputFilter.AllCaps()
Используйте синтетическое свойство для прямого доступа к виджету с идентификатором. А в XML для текста редактирования добавьте еще пару флагов:
<EditText android:id="@+id/edit_text_qr_code" android:layout_width="match_parent" android:layout_height="wrap_content" ...other attributes... android:textAllCaps="true" android:inputType="textCapCharacters" />
Это обновит клавиатуру при включении верхнего регистра.
источник
Для меня это сработало, добавив android: textAllCaps = "true" и android: inputType = "textCapCharacters"
<android.support.design.widget.TextInputEditText android:layout_width="fill_parent" android:layout_height="@dimen/edit_text_height" android:textAllCaps="true" android:inputType="textCapCharacters" />
источник
edittext.addTextChangedListener(new TextWatcher() { @Override public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) { } @Override public void beforeTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) { } @Override public void afterTextChanged(Editable et) { String s=et.toString(); if(!s.equals(s.toUpperCase())) { s=s.toUpperCase(); edittext.setText(s); } editText.setSelection(editText.getText().length()); } });
источник
Просто сделай это:
// ****** Every first letter capital in word ********* <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:inputType="textCapWords" /> //***** if all letters are capital ************ android:inputType="textCapCharacters"
источник
Попробуйте использовать любой из приведенных ниже кодов, чтобы решить вашу проблему.
программно:
editText.filters = editText.filters + InputFilter.AllCaps()
XML:
android:inputType="textCapCharacters" with Edittext
источник
Чтобы получить весь капитал, используйте в своем XML следующее:
<EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:textAllCaps="true" android:inputType="textCapCharacters" />
источник
попробуйте этот код, он сделает ваш ввод в верхнем регистре
edittext.setFilters(new InputFilter[] {new InputFilter.AllCaps()});
источник
Основываясь на принятом ответе, этот ответ делает то же самое, но в Котлине. Просто для облегчения копирования: ·)
private fun EditText.autocapitalize() { val allCapsFilter = InputFilter.AllCaps() setFilters(getFilters() + allCapsFilter) }
источник
filters += InputFilter.AllCaps()
: DПростая реализация котлина
fun EditText.onlyUppercase() { inputType = InputType.TYPE_CLASS_TEXT or InputType.TYPE_TEXT_FLAG_CAP_CHARACTERS filters = arrayOf(InputFilter.AllCaps()) }
PS вроде
filters
всегда изначально пустоисточник
Чтобы получить клавиатуру с заглавной буквы при нажатии edittext, используйте этот код в своем xml,
<EditText android:id="@+id/et" android:layout_width="250dp" android:layout_height="wrap_content" android:hint="Input your country" android:padding="10dp" android:inputType="textCapCharacters" />
источник
Я использую Visual Studio 2015 / Xamarin для создания своего приложения как для Android 5.1, так и для Android 6.0 (на обоих установлен один и тот же apk).
Когда я указал
android:inputType="textCapCharacters"
в своем axml, клавиатура AllCaps появилась, как и ожидалось, на Android 6.0, но не на Android 5.1. Я добавилandroid:textAllCaps="true"
в свой axml, но все еще нет клавиатуры AllCaps на Android 5.1. Я установил фильтр, используя,EditText.SetFilters(new IInputFilter[] { new InputFilterAllCaps() });
и, хотя программная клавиатура показывает символы нижнего регистра в Android 5.1, поле ввода теперь AllCaps.РЕДАКТИРОВАТЬ: Поведенческие различия, которые я наблюдал и предполагал, что они связаны с ОС, были на самом деле потому, что у меня были разные версии Google Keyboard на тестовых устройствах. После того, как я обновил устройства до последней версии Google Keyboard (выпущенной в июле 2016 г. на момент написания этой статьи), поведение «Все заглавные буквы» стало одинаковым для всех операционных систем. Теперь все устройства показывают символы нижнего регистра на клавиатуре, но вводится заглавными буквами из-за
SetFilters(new IInputFilter[] { new InputFilterAllCaps() });
источник
Xamarin эквивалент ответа ErlVolton:
editText.SetFilters(editText.GetFilters().Append(new InputFilterAllCaps()).ToArray());
источник
Java 1-лайнер предлагаемого решения может быть:
editText.setFilters(Lists.asList(new InputFilter.AllCaps(), editText.getFilters()) .toArray(new InputFilter[editText.getFilters().length + 1]));
Обратите внимание на необходимость
com.google.common.collect.Lists
.источник
Просто добавьте код ниже в свой EditText вашего XML-файла.
android:digits="ABCDEFGHIJKLMNOPQRSTUVWXYZ"
И если вы хотите разрешить и текст в верхнем регистре, и цифры, используйте код ниже.
android:digits="ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"
источник