美文网首页
android dialog主动弹出键盘的有效办法记录

android dialog主动弹出键盘的有效办法记录

作者: 吉凶以情迁 | 来源:发表于2023-03-21 15:41 被阅读0次

    有些玩意踩过一次坑还会再重复,人工智能也是回答错误的,足以说明安卓开发是真的操蛋,
    还得靠自己以前写的方法工具类

      imm.showSoftInput(finalPair1.second.edittext, InputMethodManager.SHOW_IMPLICIT); 
    ``` 没有什么卵用.
    

    pair.first.setOnShowListener(new DialogInterface.OnShowListener() {
    @Override
    public void onShow(DialogInterface dialog) {

                                    finalPair1.first.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);//控制键盘显示的
                                    finalPair1.first.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);//这样并没有全部顶起,但是编辑框看的更多了但是软键盘没自动弹出需要点两下
                                    finalPair1.second.edittext.selectAll();
                                    finalPair1.second.edittext.requestFocus();
                             /*       InputMethodManager imm = (InputMethodManager) tableview.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
                                    imm.showSoftInput(finalPair1.second.edittext, InputMethodManager.SHOW_IMPLICIT); // 显示软键盘*/
                                    AppUtils.showKeyboard(tableview.getContext(),finalPair1.second.edittext);
    

    // pair.first.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);//键盘不顶起,但是也不遮盖键盘
    }

                        });
                        pair.first.show();
    
    showKeyboard方法
    

    if (view != null) {//https://stackoverflow.com/questions/5520085/android-show-softkeyboard-with-showsoftinput-is-not-working
    InputMethodManager inputMethodManager = (InputMethodManager) activity.getSystemService(Context.INPUT_METHOD_SERVICE);
    boolean isShowing = inputMethodManager.showSoftInput(view, InputMethodManager.SHOW_IMPLICIT);
    if (!isShowing) {

                InputMethodManager imm = (InputMethodManager) activity.getSystemService(Context.INPUT_METHOD_SERVICE);
                imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0);
    

    activity.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);
    }
    // inputMethodManager.showSoftInput(view,InputMethodManager.SHOW_IMPLICIT);
    }

    
    目前场景是一个底部弹出的
    
        Dialog dialog = new BottomSheetDialog(context);
        T dataBinding = DataBindingUtil.inflate(LayoutInflater.from(context), layout, viewGroup, false);
        dialog.setContentView(dataBinding.getRoot());
    
        dialog.setCanceledOnTouchOutside(true);
        return new Pair<>(dialog, dataBinding);
    
    所以```SOFT_INPUT_ADJUST_RESIZE```遮盖了编辑框一半, ```SOFT_INPUT_ADJUST_PAN```让编辑框完整显示,但是会遮盖住下面的部分. 和实际情况不一致,实际应该是整个底部顶起 .这可能和BottomSheetDialog的一些配置有关系

    相关文章

      网友评论

          本文标题:android dialog主动弹出键盘的有效办法记录

          本文链接:https://www.haomeiwen.com/subject/pjumrdtx.html