Android IME: showing a custom pop-up dialog (like Swype keyboard) which can enter text into the TextView

后端 未结 4 2157
刺人心
刺人心 2021-01-03 04:21

I\'m wondering how I can create a custom pop-up like the one in the screenshot below (borrowed from the Swype keyboard), where I can have a couple of buttons, which each com

相关标签:
4条回答
  • 2021-01-03 04:43

    I was banging my head against this problem too and I finally figured it out. The above solutions are correct although as you pointed out they cannot be used from an InputMethodService because it is not an Activity. The trick is to create the PopupWindow in a subclass of KeyboardView. By using a negative Y position, the PopupWindow can appear above the keyboard like Swype.

    Good luck, Barry

    0 讨论(0)
  • 2021-01-03 04:46

    Peace be upon those who follow the guidance,

    solution :

    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 its the general name of your keyboard class ..see

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

    More info : http://developer.android.com/guide/topics/text/creating-input-method.html

    good luck.

    0 讨论(0)
  • 2021-01-03 04:54

    Correct answer:

    1. Create a PopupWindow and put your view inside it
    2. Call popupWindow.setClippingEnabled(false)
    3. Call [popupWindow.showAtLocation()](http://developer.android.com/reference/android/widget/PopupWindow.html#showAtLocation(android.view.View, int, int, int)) with a negative Y coordinate.

    This will show your popup above the IME as in your screenshot.

    0 讨论(0)
  • 2021-01-03 05:10

    You can try using a PopupWindow. You'll have to do a bit of hacking to get it to do what you want and the only good documentation for it is the source.

    0 讨论(0)
提交回复
热议问题