implement popup window on keyboard in android to a

2019-07-19 04:53发布

问题:

This keyboard can be select from the keyboard list and user can use it from any application. just implement popup-window to add images on keyboard in custom soft keyboard

回答1:

You have to create a class that extends PopupWindow

public class CustomPopup extends PopupWindow {
    Context mContext;
    View rootView;

    public CustomPopup(View rootView, Context mContext){
        super(mContext);
        this.mContext = mContext;
        this.rootView = rootView;
        View customView = createCustomView();
        setContentView(customView);
        setSoftInputMode(LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
        setSize(250, LayoutParams.MATCH_PARENT);
    }

    private View createCustomView(){
        LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        View view = inflater.inflate(R.layout.custom_popup, null, false);

        return view;
    }

    public void setSize(int width, int height){
        setWidth(width);
        setHeight(height);
    }

}

Then use it in your SoftKeyboard Class

CustomPopup popupWindow;

public View onCreateInputView() {
        final View root = getLayoutInflater().inflate(R.layout.input, null);

        popupWindow = new CustomPopup(root, this);

        return root;
}

This is how to show the popup. Note that mInputView is your keyboardView variable

private void showPopup() {
        int height = mInputView.getHeight();
        popupWindow.setSize(LayoutParams.MATCH_PARENT, height);
        popupWindow.showAtLocation(mInputView.getRootView(), Gravity.BOTTOM, 0, 0);
        final InputMethodManager mInputMethodManager = (InputMethodManager) getBaseContext()
                .getSystemService(Context.INPUT_METHOD_SERVICE);
        mInputMethodManager.showSoftInput(mInputView, 0);
    }