5

下のスクリーンショット(Swypeキーボードから借用)のようなカスタムポップアップを作成するにはどうすればよいか疑問に思っています。ここでは、それぞれが現在「接続されている」文字列に文字列をコミットするいくつかのボタンを使用できますTextViewInputConnection)。

注意:これはInputMethodServiceであり、通常のではありませんActivityActivity私はすでに。で別のを起動しようとしましたTheme:Dialog。ただし、それが開くとすぐに、TextViewとのフォーカスが失われ、キーボードが消えます(そしてそれで私のキーボードが消えInputConnectionます)。

Swype

4

4 に答える 4

2

を使用してみることができますPopupWindow。あなたはそれがあなたが望むことをするようにするために少しハッキングをしなければならないでしょう、そしてそれのための唯一の良いドキュメンテーションはソースです。

于 2010-08-18T16:45:31.667 に答える
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();

===== UPDATE30.09.2015mInputViewそのキーボードクラスの一般名..参照

@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

私もこの問題に頭を悩ませていました、そして私はついにそれを理解しました。上記のソリューションは正しいですが、ご指摘のとおり、アクティビティではないため、InputMethodServiceからは使用できません。秘訣は、KeyboardViewのサブクラスにPopupWindowを作成することです。負のY位置を使用することにより、ポップアップウィンドウをSwypeのようにキーボードの上に表示できます。

頑張って、バリー

于 2011-05-29T09:13:13.373 に答える
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 に答える