Ограничить EditText до десятичных чисел со знаком

Я пишу приложение, которое должно отображать пользователю динамически создаваемую таблицу виджетов EditText.

Мой текущий код:

      /**
      * Create and display the table of EditTexts on the screen
      * @param x Number of columns
      * @param y Number of rows
      */
        private void createTable(int x, int y) {
            TableLayout table = (TableLayout) findViewById(R.id.TableLayout01);
            etGrid = new EditText[y][x];
            for (int i = 0; i < y; i++) {
                TableRow row = new TableRow(this);
                for (int j = 0; j < x; j++) {
                    EditText et = new EditText(this);

                    et.setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL 
                              | InputType.TYPE_NUMBER_FLAG_SIGNED);

                    et.setSingleLine();
                    et.setMinimumWidth(getWindowManager().getDefaultDisplay().getWidth()/x);
                    etGrid[i][j] = et;
                    row.addView(et);
                }
                table.addView(row,new TableLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
            }

        }

Проблема в этой строке, которая не работает вообще:

et.setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL 
                                  | InputType.TYPE_NUMBER_FLAG_SIGNED);

На моем Kindle Fire я могу либо ограничить десятичные значения с помощью InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL или подписан с InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_SIGNED , но не до десятичной. В чем проблема с кодом?

0
Я не вижу никаких проблем с вашим кодом. Вы можете попробовать использовать .setRawInputType (); вместо этого, но если это тоже не сработает, вероятно, что-то Amazone испортил Kindle
добавлено автор Stefan de Bruijn, источник
Я не вижу никаких проблем с вашим кодом. Вы можете попробовать использовать .setRawInputType (); вместо этого, но если это тоже не сработает, вероятно, что-то Amazone испортил Kindle
добавлено автор Stefan de Bruijn, источник

6 ответы

Чрезвычайно важно, чтобы ВСЕГДА имели InputType.TYPE_CLASS_NUMBER перед другими параметрами: InputType.TYPE_NUMBER_FLAG_SIGNED | InputType.TYPE_NUMBER_FLAG_DECIMAL , иначе клавиатура не будет числовой!

7
добавлено
Это обычная операция OR. Приказ не имеет значения. A + B совпадает с B + A.
добавлено автор Captain Giraffe, источник

Чрезвычайно важно, чтобы ВСЕГДА имели InputType.TYPE_CLASS_NUMBER перед другими параметрами: InputType.TYPE_NUMBER_FLAG_SIGNED | InputType.TYPE_NUMBER_FLAG_DECIMAL , иначе клавиатура не будет числовой!

7
добавлено
Это обычная операция OR. Приказ не имеет значения. A + B совпадает с B + A.
добавлено автор Captain Giraffe, источник

Попробуй это:

et.setRawInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_SIGNED | InputType.TYPE_NUMBER_FLAG_DECIMAL);

Reference : setRawInputType

<Сильный> EDIT:

Я попробовал это, и это работает для меня.

Просто убедитесь в этом:

Вы должны удалить этот атрибут android: inputType из et edittext из файла xml layout . В противном случае изменения setRawInputType не отражаются.

Благодарю.

6
добавлено
Обычно это работает, но минус и точка вставляются как неизвестные символы в EditText.
добавлено автор bvk256, источник
В файле макета xml нет определения какого-либо EditText, так как все они создаются динамически во время выполнения.
добавлено автор bvk256, источник
@ bvk256, пожалуйста, просмотрите редактирование с помощью решения, которое я опубликовал. Это отлично работает для меня.
добавлено автор Pratik Sharma, источник

Попробуй это:

et.setRawInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_SIGNED | InputType.TYPE_NUMBER_FLAG_DECIMAL);

Reference : setRawInputType

<Сильный> EDIT:

Я попробовал это, и это работает для меня.

Просто убедитесь в этом:

Вы должны удалить этот атрибут android: inputType из et edittext из файла xml layout . В противном случае изменения setRawInputType не отражаются.

Благодарю.

6
добавлено
Обычно это работает, но минус и точка вставляются как неизвестные символы в EditText.
добавлено автор bvk256, источник
В файле макета xml нет определения какого-либо EditText, так как все они создаются динамически во время выполнения.
добавлено автор bvk256, источник
@ bvk256, пожалуйста, просмотрите редактирование с помощью решения, которое я опубликовал. Это отлично работает для меня.
добавлено автор Pratik Sharma, источник

Это действительно оказалось ошибкой в ​​Android от Amazon. Поскольку я пишу приложение для себя, есть небольшое обходное решение, которое отлично подходит мне:

  1. Set InputType.TYPE_CLASS_PHONE
  2. Implement a custom key filter to enforce the correct format. I've used this one.
0
добавлено

Это действительно оказалось ошибкой в ​​Android от Amazon. Поскольку я пишу приложение для себя, есть небольшое обходное решение, которое отлично подходит мне:

  1. Set InputType.TYPE_CLASS_PHONE
  2. Implement a custom key filter to enforce the correct format. I've used this one.
0
добавлено
Mobile Dev Jobs — вакансии и аналитика
Mobile Dev Jobs — вакансии и аналитика
6 187 участник(ов)

Публикуем вакансии и запросы на поиск работы по направлению iOS, Android, Xamarin и т.д. ВАЖНО: Правила публикации и правила канала: Ссылка – https://telegra.ph/Pravila-oformleniya-vakansij-i-rezyume-11-09-2

Android Developers
Android Developers
4 476 участник(ов)

Общаемся на темы, посвященным Android-разработке, SDK, Kotlin, Realm и т.д.

Android Architecture
Android Architecture
2 186 участник(ов)

Русскоязычный чат по архитектуре в андроид приложениях. Подробнее: http://telegra.ph/Android-Architecture-12-24

rus-speaking/android
rus-speaking/android
1 705 участник(ов)

Основной чат по Android разработке (вопрос-ответ). ПРАВИЛА: bit.ly/andr-rules. NEWS: bit.ly/AnrdResId ЧАТЫ: Основной: bit.ly/andr-main IDE, сборка, Git, сервисы: bit.ly/andr-tools Оффтоп: bit.ly/andr-offtop Конференции, события: bit.ly/andr-events Вакансии, найм: bit.ly/andr-job Архитектура: bit.ly/andr-patterns Rx: bit.ly/andr-rx Тестирование: bit.ly/andr-test Kotlin: bit.ly/andr-kotlin Хаmarin: bit.ly/andr-xamarin За мат, спам, агрессию, предложения о работе, оффтоп в этом канале - бан на сутки и более ☢☢☢

Android Dev Подкаст
Android Dev Подкаст
1 325 участник(ов)

Комната для обсуждения Android Dev подкаста apptractor.ru/AndroidDev/ Общее обсуждение Android: https://t.me/android_ru Остальные чаты про Android: http://t.me/devChats Наши новости https://t.me/androiddevpodcast_news

Android Guards
Android Guards
602 участник(ов)

Обсуждение любых вопросов касающихся безопасности Android. - Защита системы и приложений - Уязвимости и эксплойты - Вредоносное ПО - Копание в кишках системы и приложений (RE)

Android JOB
Android JOB
466 участник(ов)

Публикуем вакансии и запросы на поиск работы по направлению Android (full-time, part-time, remote и разовые подработки)

AndroidDev :: Разработка. It's Android time now!
AndroidDev :: Разработка. It's Android time now!
458 участник(ов)

It's Android time now! Чат разработчиков Android. Вакансии, резюме и информацию о митапах размещать можно. Публикацию скрытой и явной рекламы ваших каналов и сайтов после получения разрешения от @olegushakov

Aandroid Talks!
Aandroid Talks!
212 участник(ов)

Чат об общих вопросах по ОС Android. Чат для разработки под андроид - pro.android: https://t.me/joinchat/AAAAAEKIFKnmRT9cMebb9w

Android Rus
Android Rus
68 участник(ов)