Я пытаюсь уйти от создания пользовательской клавиатуры. Мне было интересно, есть ли способ скрыть ключ в стандартной клавиатуре Android Soft. Например, у меня есть поле EditText, для которого требуются десятичные числа без знака. Но всякий раз, когда клавиатура появляется, знак «-» всегда показывает и, очевидно, отключен. Я бы хотел избавиться от этого знака «-».Есть ли способ скрыть некоторые клавиши в Android Soft Keyboard?
ответ
мне было интересно, если есть способ, чтобы скрыть ключ по умолчанию Android Soft Keyboard
No.
Сначала на нет ни одного "по умолчанию Android Soft Keyboard". Android насчитывает более миллиарда устройств, в тысячах моделей, с установленными десятками «стандартных» клавиатур. Пользователи также могут устанавливать программные клавиатуры в качестве сторонних приложений.
Во-вторых, у вас нет возможности контролировать любой из них. В лучшем случае вы можете предлагать предложения по тому, что вы хотите, используя такие атрибуты, как android:inputType
. Тем не менее, это запросов, а не команд, а автору редактора метода ввода не нужно их соблюдать. Кроме того, , как, они чтят их до автора редактора метода ввода.
Я пытаюсь уйти от создания пользовательской клавиатуры.
Это было бы бесполезно. Вы не можете заставить пользователя использовать клавиатуру. Ваша клавиатура может не соответствовать другим требованиям пользователя. И так далее.
Например, у меня есть поле EditText, для которого требуются десятичные числа без знака. Но всякий раз, когда клавиатура появляется, знак «-» всегда показывает и, очевидно, отключен. Я бы хотел избавиться от этого знака «-».
Это зависит от разработчика редактора метода ввода, а не от вас. Некоторые клавиши могут скрыть ключ. Некоторые могут отключить ключ. Некоторые могут игнорировать полностью подписанный/неподписанный запрос и просто показывать стандартную числовую клавиатуру.Некоторые могут полностью игнорировать числовой запрос и показывать свою стандартную клавиатуру, особенно если у них действительно нет понятия «ключи».
Да, вы можете Create a Custom Keyboard on Android.
Включите эту клавиатуру в установленное приложение и активируйте клавиатуру для конкретных полей ввода, которые вы используете.
См. Также: InputMethodService для API-интерфейсов для связывания и использования механизмов ввода.
«Я пытаюсь уйти от создания пользовательской клавиатуры». – user3829751
Запись docs Вы можете задать команду EditText
с помощью InputType
. Обратите внимание на TYPE_NUMBER_FLAG_SIGNED
Флага TYPE_CLASS_NUMBER: номер подписан, что позволяет положительный или отрицательный знак в начале.
Я не думаю, что это возможно без создания пользовательской клавиатуры. Клавиатура по умолчанию обычно реализуется производителем устройства. По этой причине свойство xml android:inputType
имеет различные эффекты на разных устройствах.
Как обновление, я уступил только что с помощью специальной клавиатуры. Поскольку клавиатура, которую я хотел, это просто цифровая панель с десятичной точкой и управляющие клавиши, такие как удаление, очистка и ввод, это было легко сделать.
Я вылепил клавиатуры с помощью следующего урока (без Hex и других специальных клавиш): http://www.fampennings.nl/maarten/android/09keyboard/index.htm
Этот учебник был изъян, где разметка не будет сковороду над для клавиатуры. В результате поля EditText будут скрыты под клавиатурой. Поэтому я изменил класс CustomKeyboard на InputMethodService. Для этого я последовал за этим tutorial
И, наконец, каждый раз, когда я редактировал EditText, весь экран был бы скрыт в ландшафтном режиме, потому что мое приложение использовало только пейзаж. Поэтому это было неприемлемо. Я узнал, что должен был добавить этот метод в свой класс CustomKeyboard (поскольку он является производным от InputMethodService) из этого answer
Спасибо, что помогли мне. Надеюсь, это поможет кому-то, кто хочет сделать что-то подобное.
Я должен был упомянуть, что это приложение будет распространено в закрытой среде (как в режиме киоска). Мы будем иметь полный контроль над устройствами, на которых это приложение будет установлено (поскольку мы будем предоставлять устройства). Поэтому ваша забота о «стандартной клавиатуре Android Soft» будет неактуальной. Для других приложений, не распространяемых в контролируемой среде, ваш комментарий находится на месте. – Arlyn
@KarimArlyn: «Я должен был упомянуть, что это приложение будет распространено в закрытой среде» - это не маленький элемент, который нужно пропустить. :-) В этом случае ваш вариант, позволяющий вам написать собственный IME, является вашим единственным выбором, а в вашем IME вы можете делать то, что хотите. – CommonsWare