Android IME: показывает пользовательский всплывающую диалог (например, клавиатура Swype), которая может ввести текст в TextView

StackOverflow https://stackoverflow.com/questions/3514392

Вопрос

Мне интересно, как я могу создать пользовательский всплывающую поверхность, как на скриншоте ниже (заимствовано из клавиатуры Swype), где я могу иметь пару кнопок, которые каждый из них совершает строку в текущую «подключенную» TextView (через а Inputconnection.).

Пожалуйста, обрати внимание: это Inputmethodservice и не обычный Activity. Отказ Я уже попытался запустить отдельный Activity с Theme:Dialog. Отказ Однако, как только один открывается, я теряю сосредоточенность с TextView и моя клавиатура исчезает (и с этим моим InputConnection ушел).

Swype

Это было полезно?

Решение

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

Другие советы

Я тоже ударил голову против этой проблемы, и я наконец понял ее. Вышеуказанные решения верны, хотя, как вы указали, они не могут использоваться из ввода MethodService, потому что это не активность. Хитрость состоит в том, чтобы создать popupwindow В подклассе клавиатурыView. Отказ Используя отрицательную позицию Y, PopupWindow может появиться над клавиатурой, как Swype.

Удачи, Барри

Правильный ответ:

  1. Создать Всплывающее окно и поставить свой взгляд внутри него
  2. Вызов popupwindow.setclippingenabledened (false)
  3. Позвоните [popupwindow.showatlocation ()] (http://developer.android.com/reference/android/widget/popupwindow.html#showatlocation(android.view.view.view.view., int, int, int)) с отрицательной координатой y.

Это покажет ваше всплывающее окно над IME, как на вашем скриншоте.

Мир на тех, кто следит за руководством,

решение :

AlertDialog dialog;

//add this to your code
dialog = builder.create();
Window window = dialog.getWindow(); 

WindowManager.LayoutParams lp = window.getAttributes();
lp.token = mInputView.getWindowToken();
lp.type = WindowManager.LayoutParams.TYPE_APPLICATION_ATTACHED_DIALOG;

window.setAttributes(lp);
window.addFlags(WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM);
//end addons

dialog.show();

===== Обновление 30.09.2015 MinputView Его общее название клавиатуры клавиатуры ..

@Override
    public View onCreateInputView() {
        mInputView =(MyKeyboardView) getLayoutInflater().inflate( R.layout.input, null);
....
}

Больше информации : http://developer.android.com/guide/topics/text/creating-input-method.html.

удачи.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top