Android Studio
Android Studio is a new and fully integrated development environment, which has been recently launched by Google for the Android operating system. It has been designed to provide new tools for app development and to provide an alternative to Eclipse, currently the most widely used IDE.
When you begin a new project in Android studio, the project’s structure will appear with almost all the files held within the SDK directory, this switch to a Gradle based management system offers an even greater flexibility to the build process.
Android Studio allows you to see any visual changes you make to your app in real-time, and you can also see how it will look on a number of different Android devices, each with different configurations and resolutions, simultaneously.
Another feature in Android Studio are the new tools for the packing and labelling of code. These let you keep on top of your project when dealing with large amounts of code. The programme also uses a drag & drop system to move the components throughout the user interface.
In addition, this new environment comes with Google Cloud Messaging, a feature which lets you send data from the server to Android devices through the cloud, a great way to send Push notifications to your apps.
The programme will also help you to localize your apps, giving you a visual way to keep programming while controlling the flow of the application.
What else does Android Studio offer?
— A robust and straight forward development environment.
— An easy way to test performance on other types of device.
— Wizards and templates for common elements found in all Android programming.
— A full-featured editor with lots of extra tools to speed up the development of your applications.
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
Атрибут android:inputType=»textPostalAddress».
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 и др.).
Вот вам целый список доступных значений (иногда различия очень трудно различимы)
text textCapCharacters (клавиатура с символами в верхнем регистре) textCapWords textCapSentences textAutoCorrect textAutoComplete textMultiLine textImeMultiLine textNoSuggestions (без подсказок при вводе текста) textUri textEmailAddress textEmailSubject textShortMessage textLongMessage textPersonName textPostalAddress textPassword textVisiblePassword (без автокоррекции) textWebEditText textFilter textPhonetic number numberSigned numberDecimal phone datetime date time
Интерфейс InputType
Кроме использования атрибута android:inputType мы можем добиться нужного поведения от текста при помощи интерфейса InputType.
// Делаем заглавным первый символ предложения val inputType = InputType.TYPE_CLASS_TEXT or InputType.TYPE_TEXT_FLAG_CAP_SENTENCES editText.inputType = inputType // Другие варианты // Только числа, десятичную точку и минус val inputType = InputType.TYPE_CLASS_NUMBER or // allow numbers InputType.TYPE_NUMBER_FLAG_DECIMAL or // allow decimal numbers InputType.TYPE_NUMBER_FLAG_SIGNED // allow positive and negative numbers
Атрибут android:imeOptions — параметры для текущего метода ввода
У текстовых полей есть атрибут android:imeOptions, с помощью которого настраиваются параметры для текущего метода ввода. Например, когда EditText получает фокус и отображается виртуальная клавиатура, эта клавиатура содержит кнопку «Next» (Далее), если атрибут android:imeOptions содержит значение actionNext. Если пользователь касается этой кнопки, фокус перемещается к следующему компоненту, который принимает пользовательский ввод. Если компонент EditText получает фокус и на виртуальной клавиатуре появляется кнопка «Done» (Готово), значит использовался атрибут android:imeOptions со значением actionDone. Как только пользователь касается этой кнопки, система скрывает виртуальную клавиатуру.
Заблокировать текстовое поле
Для блокировки текстового поля присвойте значения false свойствам Focusable, Long clickable и Cursor visible.
Другие свойства
minLines и maxLines Позволяют ограничить количество строк текста, которое можно ввести в текстовом поле maxLength Позволяет задать максимальное количество символов для ввода
Методы
Основной метод класса EditText — getText(), который возвращает текст, содержащийся в текстовом поле. Возвращаемое значение имеет специальный тип Editable, а не String.
String strCatName = nickNameEditText.getText().toString(); // приводим к типу String
Соответственно, для установки текста используется метод setText().
В Kotlin может возникнуть проблема, если программист захочет использовать конструкцию присвоения через свойство.
editText.text = someText // нельзя! edittext.setText(someText)
Большинство методов для работы с текстом унаследованы от базового класса TextView: setTypeface(null, Typeface), setTextSize(int textSize), SetTextColor(int Color).
Выделение текста
У EditText есть специальные методы для выделения текста:
- selectAll() — выделяет весь текст;
- setSelection(int start, int stop) — выделяет участок текста с позиции start до позиции stop;
- setSelection(int index) — перемещает курсор на позицию index;
Предположим, нам нужно выделить популярное слово из трёх букв в большом слове (это слово «кот», а вы что подумали?).
// выделяем 4, 5, 6 символы editText.setSelection(3, 6);
Ещё есть метод setSelectAllOnFocus(), который позволяет выделить весь текст при получении фокуса.
editText.setSelectAllOnFocus(true)
Обработка нажатий клавиш
Для обработки нажатий клавиш необходимо зарегистрировать обработчик View.OnKeyListener, используя метод setOnKeyListener() элемента EditText. Например, для прослушивания события нажатия клавиши Enter во время ввода текста пользователем (или котом), используйте следующий код:
// Kotlin // edit text enter key listener editText.setOnKeyListener(object : View.OnKeyListener < override fun onKey(v: View?, keyCode: Int, event: KeyEvent): Boolean < // if the event is a key down event on the enter button if (event.action == KeyEvent.ACTION_DOWN && keyCode == KeyEvent.KEYCODE_ENTER ) < // perform action on key press textView.text = "Pressed Enter Key\n\n$" // clear focus and hide cursor from edit text editText.clearFocus() editText.isCursorVisible = false return true > return false > >)
// Java final EditText editText = findViewById(R.id.EditText1); editText.setOnKeyListener(new View.OnKeyListener() < public boolean onKey(View v, int keyCode, KeyEvent event) < if(event.getAction() == KeyEvent.ACTION_DOWN && (keyCode == KeyEvent.KEYCODE_ENTER)) < // сохраняем текст, введённый до нажатия Enter в переменную String strCatName = editText.getText().toString(); return true; >return false; > > );
Пустой ли EditText
Чтобы проверить, пустой ли EditText, можно воспользоваться кодом:
if (editText.getText().toString().equals("")) < // Здесь код, если EditText пуст >else < // если есть текст, то здесь другой код >
Также можно проверять длину текста, если она равно 0, значит текст пуст.
if (editText.getText().length() == 0)
В Kotlin есть удобная функция-расширение ifEmpty(), позволяющая сделать проверку и задать значение по умолчанию, что очень удобно во многих случаях.
// если текстовое поле пустое, то задать текст по умолчанию val cat = catEditText.text.ifEmpty < "Барсик" >.toString()
Превращаем EditText в TextView
Практического смысла тут нет, но для общего развития превратим текстовое поле в текстовую метку. Для этого нужно сделать компонент недоступным, убрать курсор, установить прозрачный фон и отключить слушатель нажатий клавиш.
EditText editText = (EditText)findViewById(R.id.editText); editText.setEnabled(false); editText.setCursorVisible(false); editText.setBackgroundColor(Color.TRANSPARENT); editText.setKeyListener(null);
Также можно установить эти свойства через XML, кроме последнего пункта.
Дополнительное чтение
Beware EditText on API 21 — разница между версиями 21 и 22
Установка максимального количества символов в Android Studio
Android Studio – это популярная интегрированная среда разработки (IDE) для создания мобильных приложений под операционную систему Android. Одной из ее полезных функций является максимальное количество символов, которое можно установить в различных файлах проекта (например, в файлах макетов XML или в файлах исходного кода Java).
Установка максимального количества символов может быть полезна при разработке проектов с ограничениями на размер файла или строки кода. Это поможет вам избежать возможных проблем, связанных с превышением лимитов символов.
В этом руководстве мы покажем вам, как установить максимальное количество символов в Android Studio. Мы рассмотрим шаги, необходимые для установки лимитов символов в разных типах файлов и предоставим пошаговые инструкции для выполнения этой операции.
Примечание: перед тем, как устанавливать максимальное количество символов, рекомендуется создать резервную копию своего проекта, чтобы в случае возникновения проблем можно было легко вернуться к предыдущему состоянию.
Перейдите в настройки Android Studio
Шаг 1: Откройте Android Studio.
Шаг 2: В верхней панели выберите пункт «File» и в выпадающем меню выберите «Settings».
Шаг 3: Появится окно с настройками Android Studio. В левой панели выберите нужную категорию, в данном случае «Editor».
Шаг 4: В правой панели найдите настройку с именем «Code Style» и выберите ее.
Шаг 5: В разделе «Java» выберите пункт «Code Generation».
Шаг 6: В списке настроек найдите опцию «Line length» или «Максимальная длина строки».
Шаг 7: Введите желаемое значение для ограничения максимальной длины строки кода.
Шаг 8: Нажмите кнопку «Apply» или «OK», чтобы сохранить изменения.
Найдите раздел «Code Style»
Для установки максимального количества символов в Android Studio необходимо найти соответствующие настройки в разделе «Code Style». В этом разделе можно настроить параметры форматирования кода, включая ограничение на количество символов в строке.
Чтобы найти раздел «Code Style», следуйте следующим шагам:
- Откройте Android Studio и выберите вкладку «File» в верхнем меню.
- В выпадающем меню выберите пункт «Settings».
- В открывшемся окне настройки найдите и выберите раздел «Editor».
- Внутри раздела «Editor» найдите и выберите пункт «Code Style».
В разделе «Code Style» вы можете настроить стиль кода для разных языков программирования, таких как Java, Kotlin, XML и другие. Вам понадобится выбрать соответствующий язык программирования, для которого вы хотите установить ограничение на количество символов в строке.
После выбора языка программирования вы увидите различные настройки форматирования кода. В зависимости от выбранного языка, вы можете найти опцию «Hard wrap at» или похожую на нее. Эта опция позволяет задать максимальное количество символов в строке.
Чтобы установить максимальное количество символов в строке, укажите желаемое значение в соответствующем поле. Например, если вы хотите ограничить количество символов в строке 80, введите это значение в поле.
После того как вы установили максимальное количество символов в строке, нажмите кнопку «OK» для сохранения настроек.
Теперь вы установили максимальное количество символов в Android Studio и код будет автоматически форматироваться с учетом этого ограничения.
Выберите язык программирования
Перед тем как начать использовать Android Studio, вам необходимо выбрать язык программирования, на котором вы будете разрабатывать свои приложения. Android Studio поддерживает несколько языков программирования, таких как:
- Java — это основной язык программирования для разработки Android-приложений. Он имеет широкую поддержку и богатую экосистему, что делает его идеальным выбором для начала разработки.
- Kotlin — это современный язык программирования, который также поддерживается Android Studio. Kotlin предлагает более компактный и безопасный синтаксис, что делает его предпочтительным выбором для многих разработчиков.
Решение о том, на каком языке программирования вы будете разрабатывать приложения, зависит от различных факторов, включая ваш опыт, предпочтения и требования вашего проекта. Рекомендуется изучить оба языка и выбрать тот, который лучше соответствует вашим потребностям.
В Android Studio вы можете создать новый проект на основе выбранного языка программирования или добавить поддержку другого языка в существующий проект. Выбор языка программирования должен быть сделан перед началом разработки проекта, поскольку это служит основой для всего кодирования и архитектуры приложения.
Язык программирования | Описание |
---|---|
Java | Основной язык программирования для разработки Android-приложений. Широко используется и имеет множество ресурсов. |
Kotlin | Современный язык программирования, который стал официальным языком разработки Android-приложений. Предлагает более безопасный и компактный синтаксис. |
Решение о выборе языка программирования является важным шагом перед началом разработки в Android Studio. Вам следует оценить свои навыки, потребности проекта и выбрать язык, который лучше всего подходит для вас. Чтобы начать разрабатывать на выбранном языке, следуйте инструкциям Android Studio и изучайте материалы и руководства, доступные онлайн.
Найдите раздел «Строка»
Для установки максимального количества символов в Android Studio вам потребуется найти раздел «Строка» в настройках.
1. Откройте Android Studio и перейдите в меню «File» (Файл).
2. Выберите «Settings» (Настройки), чтобы открыть окно настроек.
3. В окне настроек найдите раздел «Editor» (Редактор) и раскройте его.
4. В разделе «Editor» выберите «Code Style» (Стиль кода).
5. В открывшемся окне «Code Style» найдите и выберите вкладку «Java» (если вы используете Java) или «Kotlin» (если вы используете Kotlin) в верхней части окна.
6. В списке справа найдите раздел «Wrapping and Braces» (Переносы и фигурные скобки) и раскройте его.
7. В разделе «Wrapping and Braces» найдите вкладку «Wrapping» (Переносы) и выберите ее.
8. В списке справа найдите параметр «Right margin» (Правое поле) и введите максимальное количество символов, которое вы хотите разрешить в одной строке кода. Вы можете ввести любое число в соответствии с вашими предпочтениями.
9. Нажмите кнопку «Apply» (Применить), чтобы сохранить изменения.
Теперь вы установили максимальное количество символов в Android Studio для удобства чтения и написания кода. При достижении этого количества символов в одной строке, код будет автоматически переноситься на новую строку.
Введите максимальное количество символов
Когда вы работаете с Android Studio, иногда может возникать необходимость ограничить количество символов, которое может быть введено в определенное поле. Например, вы можете хотеть ограничить количество символов в текстовом поле, чтобы пользователь не вводил слишком длинные комментарии или описания.
Для установки максимального количества символов в Android Studio вам нужно выполнить следующие шаги:
- Откройте файл разметки XML, в котором находится поле, в котором вы хотите ограничить количество символов.
- Добавьте атрибут android:maxLength к тегу соответствующего поля. Например, если у вас есть EditText, вы можете добавить атрибут следующим образом: android:maxLength=»50″, где 50 — это максимальное количество символов.
После того как вы установите максимальное количество символов, Android Studio автоматически ограничит ввод пользователя в это поле. Если пользователь попытается ввести больше символов, чем максимально допустимо, то ввод будет автоматически ограничен.
Используя этот метод, вы можете уверенно контролировать количество символов, которое пользователь может вводить в определенные поля вашего приложения, чтобы сохранить его в пределах допустимых значений и предотвратить возможные ошибки или проблемы с отображением данных.
Сохраните изменения
После того как вы внесли необходимые изменения в настройки максимального количества символов в Android Studio, не забудьте сохранить изменения, чтобы они вступили в силу.
Для сохранения изменений в Android Studio выполните следующие шаги:
- Нажмите на вкладку «File» в верхней панели меню.
- В выпадающем меню выберите пункт «Save All» или используйте сочетание клавиш «Ctrl+S» (Windows/Linux) или «Cmd+S» (Mac), чтобы сохранить все открытые файлы.
После выполнения этих шагов все внесенные изменения будут сохранены, и новые настройки максимального количества символов вступят в действие.
Проверьте результат
После завершения всех шагов установки максимального количества символов в Android Studio, можно проверить, правильно ли все настроено. Для этого выполните следующие действия:
- Откройте любое активити или фрагмент, где у вас есть поле ввода текста, например, EditText.
- Попробуйте ввести текст, который превышает установленное максимальное количество символов.
- Убедитесь, что ввод текста прекращается после достижения максимального количества символов и не допускается ввод дополнительных символов.
- Если все работает должным образом, значит, настройка максимального количества символов в Android Studio выполнена успешно!
Теперь вы можете быть уверены, что ваше приложение ограничивает количество символов в полях ввода, что поможет вам избежать ошибок и улучшить пользовательский опыт.
What’s the best way to limit text length of EditText in Android
What’s the best way to limit the text length of an EditText in Android? Is there a way to do this via xml?
3,228 3 3 gold badges 33 33 silver badges 36 36 bronze badges
asked Jul 19, 2010 at 21:55
120k 131 131 gold badges 339 339 silver badges 478 478 bronze badges
I wanted to set the maximum number of characters for my EditText. At first it was not obvious that text length limit was the same thing. (Just a note for another confuse traveller).
Oct 14, 2014 at 17:33
The correct answer is here: stackoverflow.com/a/19222238/276949. This answer limits the length AND prevents a buffer from continously filling after hitting the limit, therefore allowing your backspace key to work properly.
Nov 11, 2015 at 3:51
22 Answers 22
android:maxLength="10"
1,389 14 14 silver badges 21 21 bronze badges
answered Jul 19, 2010 at 21:57
Austin Hanson Austin Hanson
22k 6 6 gold badges 36 36 silver badges 43 43 bronze badges
D’oh! The same thing happened to me. I was looking at the code, and there isn’t a setMaxLength method.
Jul 19, 2010 at 22:00
what does the Check here do? It just links to this page.
Oct 24, 2013 at 17:45
@Vincy, you are incorrect. The maxLength property still works.
Mar 4, 2015 at 20:07
Be aware that android:maxLength is equivalent to InputFilter.LengthFilter , so when programmatically changing it’s filter, you have modified its XML filter as well.
Aug 1, 2015 at 3:00
To the people who says it doesn’t work, be aware that calling setFilters will stop android:maxLength working, because it overwrites the filter set by the XML. In other words, if you set any filters programmatically, you must set them all programmatically.
May 19, 2016 at 10:49
use an input filter to limit the max length of a text view.
TextView editEntryView = new TextView(. ); InputFilter[] filterArray = new InputFilter[1]; filterArray[0] = new InputFilter.LengthFilter(8); editEntryView.setFilters(filterArray);
6,756 4 4 gold badges 24 24 silver badges 29 29 bronze badges
answered Nov 10, 2010 at 15:23
4,056 1 1 gold badge 15 15 silver badges 5 5 bronze badges
This is very useful if someone already made some InputFilter . It overrides android:maxlength in xml file, so we need to add LengthFilter this way.
Sep 12, 2013 at 11:24
I think your answer is the best answer, since it is more dynamic, +1
Jun 16, 2014 at 5:17
this works, my case: abc.setFilters(new InputFilter[]
Dec 8, 2022 at 4:25
EditText editText = new EditText(this); int maxLength = 3; editText.setFilters(new InputFilter[] );
16k 5 5 gold badges 47 47 silver badges 62 62 bronze badges
answered Jan 21, 2013 at 6:18
Emran Hamza Emran Hamza
3,849 1 1 gold badge 25 25 silver badges 20 20 bronze badges
This is similar to the way android does it with the xml.
Aug 1, 2017 at 8:21
How can i set minimum length?
Nov 1, 2018 at 15:10
@AkhilaMadari, probably with TextWatcher .
Oct 10, 2019 at 16:50
I have had this problem and I consider we are missing a well explained way of doing this programmatically without losing the already set filters.
Setting the length in XML:
As the accepted answer states correctly, if you want to define a fixed length to an EditText which you won’t change further in the future just define in your EditText XML:
android:maxLength="10"
Setting the length programmatically
To set the length programmatically you’ll need to set it through an InputFilter . But if you create a new InputFilter and set it to the EditText you will lose all the other already defined filters (e.g. maxLines, inputType, etc) which you might have added either through XML or programatically.
So this is WRONG:
editText.setFilters(new InputFilter[] );
To avoid losing previously added filters you need to get those filters, add the new one (maxLength in this case), and set the filters back to the EditText as follow:
Java
InputFilter[] editFilters = editText.getFilters(); InputFilter[] newFilters = new InputFilter[editFilters.length + 1]; System.arraycopy(editFilters, 0, newFilters, 0, editFilters.length); newFilters[editFilters.length] = new InputFilter.LengthFilter(maxLength); editText.setFilters(newFilters);
Kotlin however made it easier for everyone, you also need to add the filter to the already existing ones but you can achieve that with a simple:
editText.filters += InputFilter.LengthFilter(maxLength)
answered Sep 27, 2017 at 14:44
9,466 3 3 gold badges 32 32 silver badges 36 36 bronze badges
+1. Didn’t know about the filters. Otoh, after comparing the Java and Kotlin code I wonder why people keep insisting on Java for Android development xd.
Jan 20, 2021 at 21:43
I did something like this in KOTLIN: myEdt.filters = arrayOf(InputFilter.LengthFilter(MAX_LENGTH))
Feb 19, 2023 at 11:30
A note to people who are already using a custom input filter and also want to limit the max length:
When you assign input filters in code all previously set input filters are cleared, including one set with android:maxLength . I found this out when attempting to use a custom input filter to prevent the use of some characters that we don’t allow in a password field. After setting that filter with setFilters the maxLength was no longer observed. The solution was to set maxLength and my custom filter together programmatically. Something like this:
myEditText.setFilters(new InputFilter[] < new PasswordCharFilter(), new InputFilter.LengthFilter(20) >);
12.4k 5 5 gold badges 35 35 silver badges 72 72 bronze badges
answered May 23, 2012 at 15:57
4,370 1 1 gold badge 23 23 silver badges 33 33 bronze badges
You could retrieve existing filters first as , InputFilter[] existingFilters = editText.getFilters(); Then add your filter along with this existing filters
Jul 29, 2016 at 8:56
TextView tv = new TextView(this); tv.setFilters(new InputFilter[]< new InputFilter.LengthFilter(250) >);
12.4k 5 5 gold badges 35 35 silver badges 72 72 bronze badges
answered Jan 8, 2013 at 7:58
472 6 6 silver badges 15 15 bronze badges
Sure, only for android
Apr 6, 2016 at 5:04
For anyone else wondering how to achieve this, here is my extended EditText class EditTextNumeric .
.setMaxLength(int) — sets maximum number of digits
.setMaxValue(int) — limit maximum integer value
.setMin(int) — limit minimum integer value
.getValue() — get integer value
import android.content.Context; import android.text.InputFilter; import android.text.InputType; import android.widget.EditText; public class EditTextNumeric extends EditText < protected int max_value = Integer.MAX_VALUE; protected int min_value = Integer.MIN_VALUE; // constructor public EditTextNumeric(Context context) < super(context); this.setInputType(InputType.TYPE_CLASS_NUMBER); >// checks whether the limits are set and corrects them if not within limits @Override protected void onTextChanged(CharSequence text, int start, int before, int after) < if (max_value != Integer.MAX_VALUE) < try < if (Integer.parseInt(this.getText().toString()) >max_value) < // change value and keep cursor position int selection = this.getSelectionStart(); this.setText(String.valueOf(max_value)); if (selection >= this.getText().toString().length()) < selection = this.getText().toString().length(); >this.setSelection(selection); > > catch (NumberFormatException exception) < super.onTextChanged(text, start, before, after); >> if (min_value != Integer.MIN_VALUE) < try < if (Integer.parseInt(this.getText().toString()) < min_value) < // change value and keep cursor position int selection = this.getSelectionStart(); this.setText(String.valueOf(min_value)); if (selection >= this.getText().toString().length()) < selection = this.getText().toString().length(); >this.setSelection(selection); > > catch (NumberFormatException exception) < super.onTextChanged(text, start, before, after); >> super.onTextChanged(text, start, before, after); > // set the max number of digits the user can enter public void setMaxLength(int length) < InputFilter[] FilterArray = new InputFilter[1]; FilterArray[0] = new InputFilter.LengthFilter(length); this.setFilters(FilterArray); >// set the maximum integer value the user can enter. // if exeeded, input value will become equal to the set limit public void setMaxValue(int value) < max_value = value; >// set the minimum integer value the user can enter. // if entered value is inferior, input value will become equal to the set limit public void setMinValue(int value) < min_value = value; >// returns integer value or 0 if errorous value public int getValue() < try < return Integer.parseInt(this.getText().toString()); >catch (NumberFormatException exception) < return 0; >> >
final EditTextNumeric input = new EditTextNumeric(this); input.setMaxLength(5); input.setMaxValue(total_pages); input.setMinValue(1);
All other methods and attributes that apply to EditText , of course work too.