美文网首页
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