2015-05-05 3 views
0

Я пытаюсь уйти от создания пользовательской клавиатуры. Мне было интересно, есть ли способ скрыть ключ в стандартной клавиатуре Android Soft. Например, у меня есть поле EditText, для которого требуются десятичные числа без знака. Но всякий раз, когда клавиатура появляется, знак «-» всегда показывает и, очевидно, отключен. Я бы хотел избавиться от этого знака «-».Есть ли способ скрыть некоторые клавиши в Android Soft Keyboard?

ответ

3

мне было интересно, если есть способ, чтобы скрыть ключ по умолчанию Android Soft Keyboard

No.

Сначала на нет ни одного "по умолчанию Android Soft Keyboard". Android насчитывает более миллиарда устройств, в тысячах моделей, с установленными десятками «стандартных» клавиатур. Пользователи также могут устанавливать программные клавиатуры в качестве сторонних приложений.

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

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

Это было бы бесполезно. Вы не можете заставить пользователя использовать клавиатуру. Ваша клавиатура может не соответствовать другим требованиям пользователя. И так далее.

Например, у меня есть поле EditText, для которого требуются десятичные числа без знака. Но всякий раз, когда клавиатура появляется, знак «-» всегда показывает и, очевидно, отключен. Я бы хотел избавиться от этого знака «-».

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

+0

Я должен был упомянуть, что это приложение будет распространено в закрытой среде (как в режиме киоска). Мы будем иметь полный контроль над устройствами, на которых это приложение будет установлено (поскольку мы будем предоставлять устройства). Поэтому ваша забота о «стандартной клавиатуре Android Soft» будет неактуальной. Для других приложений, не распространяемых в контролируемой среде, ваш комментарий находится на месте. – Arlyn

+0

@KarimArlyn: «Я должен был упомянуть, что это приложение будет распространено в закрытой среде» - это не маленький элемент, который нужно пропустить. :-) В этом случае ваш вариант, позволяющий вам написать собственный IME, является вашим единственным выбором, а в вашем IME вы можете делать то, что хотите. – CommonsWare

0

Да, вы можете Create a Custom Keyboard on Android.

Включите эту клавиатуру в установленное приложение и активируйте клавиатуру для конкретных полей ввода, которые вы используете.

См. Также: InputMethodService для API-интерфейсов для связывания и использования механизмов ввода.

+0

«Я пытаюсь уйти от создания пользовательской клавиатуры». – user3829751

0

Запись docs Вы можете задать команду EditText с помощью InputType. Обратите внимание на TYPE_NUMBER_FLAG_SIGNED

Флага TYPE_CLASS_NUMBER: номер подписан, что позволяет положительный или отрицательный знак в начале.

0

Я не думаю, что это возможно без создания пользовательской клавиатуры. Клавиатура по умолчанию обычно реализуется производителем устройства. По этой причине свойство xml android:inputType имеет различные эффекты на разных устройствах.

0

Как обновление, я уступил только что с помощью специальной клавиатуры. Поскольку клавиатура, которую я хотел, это просто цифровая панель с десятичной точкой и управляющие клавиши, такие как удаление, очистка и ввод, это было легко сделать.

Я вылепил клавиатуры с помощью следующего урока (без Hex и других специальных клавиш): http://www.fampennings.nl/maarten/android/09keyboard/index.htm

Этот учебник был изъян, где разметка не будет сковороду над для клавиатуры. В результате поля EditText будут скрыты под клавиатурой. Поэтому я изменил класс CustomKeyboard на InputMethodService. Для этого я последовал за этим tutorial

И, наконец, каждый раз, когда я редактировал EditText, весь экран был бы скрыт в ландшафтном режиме, потому что мое приложение использовало только пейзаж. Поэтому это было неприемлемо. Я узнал, что должен был добавить этот метод в свой класс CustomKeyboard (поскольку он является производным от InputMethodService) из этого answer

Спасибо, что помогли мне. Надеюсь, это поможет кому-то, кто хочет сделать что-то подобное.