пятница, 15 июля 2011 г.

Android: Управляем виртуальной клавиатурой программно

В современных Android-смартфонах виртуальная (экранная) клавиатура очень полезный инструмент - это мало кто поставит под сомнение. А для разработчика она приятна ещё и своей гибкостью. Тут я приведу пару приёмов по управлению этим "девайсом".

Изменить вид клавиатуры для данного EditText-а:
EditText ipt = new EditText(this);
ipt.setInputType(InputType.TYPE_CLASS_PHONE);  - установит клавиатуру для ввода номера телефона. Другие варианты:
TYPE_CLASS_DATETIME - дата и время
TYPE_CLASS_NUMBER - цифры
TYPE_CLASS_TEXT - буквы

Убрать клавиатуру с экрана:
Context context = getApplicationContext();
InputMethodManager imm = (InputMethodManager)context.getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(edit.getWindowToken(), 0);
Тут edit - EditText для которого нужно скрыть клавиатуру.
Код так выглядит, если писать его в Activity. Если расположить его в другом классе, экземпляр Activity нужно передать туда как параметр и вызывать методы как  act.getApplicationContext(), где act - экземпляр Activity

2 комментария:

  1. public static void show(final Activity activity) {
    Runnable showingSoftKeyboard = new Runnable() {
    public void run() {
    try {
    EditText edtText = (EditText) activity.getCurrentFocus();
    InputMethodManager inputMethodManager = (InputMethodManager) activity.getSystemService(Activity.INPUT_METHOD_SERVICE);
    inputMethodManager.showSoftInput(activity.getCurrentFocus(), InputMethodManager.RESULT_UNCHANGED_SHOWN);
    edtText.setSelection(edtText.getText().length());
    } catch(Exception e) {
    e.printStackTrace();
    }
    }
    };
    new Handler().postDelayed(showingSoftKeyboard, 100);
    }

    А вот этот код способен клавиатуру показать! =)

    ОтветитьУдалить