2010-01-01 4 views
8

У меня есть ListView, и можно использовать аппаратную клавиатуру для фильтрации элементов. Однако что мне делать для телефонов, у которых нет аппаратной клавиатуры и только виртуальной? Есть ли способ добавить кнопку, которая при нажатии появляется виртуальная клавиатура?Кнопка для отображения виртуальной клавиатуры?

ответ

28

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

InputMethodManager inputMgr = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); 
inputMgr.toggleSoftInput(0, 0); 
+0

Спасибо вам, что он хорошо работал ..... – praveenb

+0

Хорошо, что это нормально – Sandy

+0

Я получаю только клавиатуру, и ничего больше, без текстового поля. ??? – marjanbaz

3

Одно из предложений может заключаться в использовании текстового блока ввода (EditText). Таким образом, пользователь может теоретически ввести более одного персонажа, чтобы сузить поиск (и посмотреть, что они набрали). Для отображения экранной клавиатуры все, что им нужно, это коснуться текстового поля. Если это поле было названо «Поиск» или что-то подобное, я считаю, что это будет более интуитивно понятным для пользователя, чем кнопкой.

+0

Спасибо, что указал мне в правильном направлении – Tyler

2

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

Хотя это, по-видимому, зависит от устройства. Я знаю, что это работает на G1, но на моем HTC Hero он не работает на главном экране (хотя HTC, похоже, перепутал несколько ярлыков, например, удерживая кнопку Home).

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

+2

Длинное нажатие на меню предназначалось только для последней совместимости для приложений, которые в то время не знали о мягких клавиатурах. Приложения, написанные сегодня, не должны полагаться на это. Поскольку это режим совместимости, он помещает клавиатуру в другое состояние, чем вы ожидаете - например, пользователю необходимо явно отклонить ее, а не следовать нормальным правилам автоматического отключения при навигации через пользовательский интерфейс. – hackbod

+0

Спасибо за разъяснение (от Android не меньше!;)). Итак, каково было бы рекомендованное решение для первоначального вопроса? Явное текстовое поле поиска/фильтра как указано в bdls? –

+0

Добавление поля EditText, похоже, сработает. Я нашел вопрос на http://stackoverflow.com/questions/1737009/answer-to-making-a-nice-looking-listview-filter-on-android (первый ответ), который дает хороший учебник, который я следую , – Tyler

0

Сохранение кнопки меню, похоже, больше не работает в Android 4.0 (IceCreamSandwich). Это разбивает фильтруемые списки во многих приложениях, где пользователь больше не имеет возможности фильтровать список, и ему нужно использовать eyeball-grep через длинные длинные списки.

Смежные вопросы