Цифровая клавиатура Android с запятой API 23 выше [дубликат]

Примечание: Это просто дополнение для принятого ответа.

Это связано с Java модификаторами доступа .

Из Модификаторы доступа Java :

Модификатор доступа Java указывает, какие классы могут получить доступ к данному классу и его полям, конструкторам и методам. Модификаторы доступа могут быть указаны отдельно для класса, его конструкторов, полей и методов. Модификаторы доступа Java иногда также упоминаются в ежедневной речи как спецификаторы доступа Java, но правильное имя - модификаторы доступа Java. Классы, поля, конструкторы и методы могут иметь один из четырех различных модификаторов доступа Java:

  • Элемент списка
  • private
  • default (package)
  • protected
  • public

Из Управление доступом к членам класса :

Модификаторы уровня доступа определяют, могут ли другие классы использовать определенное поле или вызвать конкретный метод. Существует два уровня контроля доступа:

  • На верхнем уровне - public или package-private (без явного модификатора).
  • На уровне участника - общедоступный, закрытый , protected или package-private (без явного модификатора).

Класс может быть объявлен публичным модификатором, и в этом случае этот класс будет виден всем классам. Если класс не имеет модификатора (по умолчанию, также известного как private-package), он виден только в его собственном пакете

В следующей таблице показан доступ к членам, разрешенным каждым модификатором.

╔═════════════╦═══════╦═════════╦══════════╦═══════╗
║ Modifier    ║ Class ║ Package ║ Subclass ║ World ║
╠═════════════╬═══════╬═════════╬══════════╬═══════╣
║ public      ║ Y     ║ Y       ║ Y        ║ Y     ║
║ protected   ║ Y     ║ Y       ║ Y        ║ N     ║
║ no modifier ║ Y     ║ Y       ║ N        ║ N     ║
║ private     ║ Y     ║ N       ║ N        ║ N     ║
╚═════════════╩═══════╩═════════╩══════════╩═══════╝

Первый столбец данных указывает, имеет ли сам класс доступ к члену, определенному уровнем доступа. Как вы можете видеть, у класса всегда есть доступ к своим членам. Во втором столбце указано, имеют ли классы в том же пакете, что и класс (независимо от их происхождения), доступ к члену. Третий столбец указывает, имеют ли подклассы класса, объявленного вне этого пакета, доступ к элементу. Четвертый столбец указывает, имеют ли все классы доступ к члену.

Уровни доступа влияют на вас двумя способами. Во-первых, когда вы используете классы, которые поступают из другого источника, например классы на платформе Java, уровни доступа определяют, какие члены этих классов могут использовать ваши собственные классы. Во-вторых, когда вы пишете класс, вам нужно решить, какой уровень доступа должен иметь каждая переменная-член и каждый метод в вашем классе.

1
задан Notbad 8 October 2012 в 11:45
поделиться

4 ответа

Я решил это, расширив NumberKeyListener, чтобы принять ',' и '.', и overrode:

@Override
public int getInputType() {
   return InputType.TYPE_CLASS_NUMBER 
          | InputType.TYPE_NUMBER_FLAG_DECIMAL 
          | InputType.TYPE_NUMBER_FLAG_SIGNED;
}

Кроме того, я установил TextWatcher в EditText, который заменил все '.' с ',' в afterTextChanged().

Но мне не удалось показать запятую на экранной клавиатуре.

1
ответ дан Bondax 26 August 2018 в 03:35
поделиться

В пространстве имен android вы можете использовать:

android:inputType="numberDecimal"

, который позволяет вам вводить «.»

-1
ответ дан android 26 August 2018 в 03:35
поделиться

Невозможно показать '.' в мягкой клавиатуре, не создавая свой собственный. Решение, которое я нашел, это:

<EditText
    android:inputType="numberDecimal"
    android:digits="0123456789," />

Таким образом, когда вы нажимаете кнопку «.», в мягкой клавиатуре ничего не происходит; допускаются только числа и запятые

2
ответ дан Jorge Alcolea Coronel 26 August 2018 в 03:35
поделиться

Вы можете использовать следующее обходное решение, которое также включает запятую в качестве допустимого ввода: -

Через XML:

<EditText
    android:inputType="number"
    android:digits="0123456789.," />

Программно:

EditText input = new EditText(THE_CONTEXT);
input.setKeyListener(DigitsKeyListener.getInstance("0123456789.,"));

Таким образом, система Android покажет клавиатуру номеров и позволит вводить запятую. Надеюсь, это поможет:)

10
ответ дан MiaN KhaLiD 26 August 2018 в 03:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: