Android IME:テキストにテキストを入力できるカスタムポップアップダイアログ(Swypeキーボードなど)を表示する
-
29-09-2019 - |
質問
以下のスクリーンショットのようなカスタムポップアップ(Swypeキーボードから借りた)のようなカスタムポップアップをどのように作成できるのか疑問に思っています。 TextView
(A経由 inputConnection).
ご注意ください: これは inputMethodService 普通ではありません Activity
. 。私はすでに別のものを起動しようとしました Activity
と Theme:Dialog
. 。しかし、それが開くとすぐに私は TextView
そして、私のキーボードは消えます(そしてそれによって私 InputConnection
なくなっている)。
解決
あなたはaを使用してみることができます PopupWindow
. 。あなたはそれをあなたが望むことをさせるために少しハッキングをする必要があり、それのための唯一の良いドキュメントはソースです。
他のヒント
私もこの問題に頭を叩いていたので、ついにそれを理解しました。上記のソリューションは正しいですが、あなたが指摘したように、それらはアクティビティではないため、それらは入力methodserviceから使用することはできません。トリックは、PopupWindowを作成することです キーボードビューのサブクラスで. 。負のY位置を使用することにより、PopupWindowはSwypeのようにキーボードの上に表示できます。
頑張って、バリー
正解:
- aを作成します ポップアップウィンドウ そして、あなたの見解をその中に入れてください
- 電話 popupwindow.setclippingEnabled(false)
- popupwindow.showatlocation()]を呼び出すhttp://developer.android.com/reference/android/widget/popupwindow.html#showatlocation(android.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あなたのキーボードクラスの一般名..see
@Override
public View onCreateInputView() {
mInputView =(MyKeyboardView) getLayoutInflater().inflate( R.layout.input, null);
....
}
より詳しい情報 : http://developer.android.com/guide/topics/text/creating-input-method.html
幸運を。