5

我想知道如何创建一个像下面屏幕截图中的自定义弹出窗口(从 Swype 键盘借来的),我可以在其中有几个按钮,每个按钮都将一个字符串提交给当前“已连接” TextView(通过一个输入连接)。

请注意:这是InputMethodService而不是普通的Activity. 我已经尝试ActivityTheme:Dialog. 然而,一旦那个打开,我失去了我的焦点,TextView我的键盘消失了(我的键盘消失InputConnection了)。

扫一扫

4

4 回答 4

2

您可以尝试使用PopupWindow. 你必须做一些黑客攻击才能让它做你想做的事情,唯一好的文档就是源代码。

于 2010-08-18T16:45:31.667 回答
1

我也在努力解决这个问题,我终于弄明白了。上述解决方案是正确的,尽管正如您指出的那样,它们不能从 InputMethodService 中使用,因为它不是 Activity。诀窍是在 KeyboardView 的子类中创建 PopupWindow。通过使用负 Y 位置,PopupWindow 可以像 Swype 一样出现在键盘上方。

祝你好运,巴里

于 2011-05-29T09:13:13.373 回答
1

愿那些遵循指引的人平安,

解决方案 :

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();

===== UPDATE 30.09.2015 mInputView 它的键盘类的通用名称..see

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

更多信息:http: //developer.android.com/guide/topics/text/creating-input-method.html

祝你好运。

于 2010-11-25T10:07:28.440 回答
1

正确答案:

  1. 创建一个PopupWindow并将您的视图放入其中
  2. 调用popupWindow.setClippingEnabled(false)
  3. 使用负 Y 坐标调用 [popupWindow.showAtLocation()]( http://developer.android.com/reference/android/widget/PopupWindow.html#showAtLocation(android.view.View , int, int, int))。

这将在 IME 上方显示您的弹出窗口,如您的屏幕截图所示。

于 2015-09-30T05:17:14.630 回答