AlertDialog无法弹出软键盘问题
2017-09-20 17:51
211 查看
AlertDialog好像本身有限制,可以改用Dialog。
Dialog的以下设置:
软键盘显示与隐藏:
Dialog的以下设置:
@Override protected void onCreate(Bundle savedInstanceState) { this.requestWindowFeature(Window.FEATURE_NO_TITLE);//去除title super.onCreate(savedInstanceState); int width = AppContext.getInstance().getWindowWidth()*5/6; // int height = view.getMeasuredHeight(); Window window = this.getWindow(); window.setGravity(Gravity.CENTER); //可设置dialog的位置 window.getDecorView().setPadding(20, 0, 20, 0); //消除边距 WindowManager.LayoutParams lp = window.getAttributes(); lp.width = width; //设置宽度充满屏幕 lp.height = WindowManager.LayoutParams.WRAP_CONTENT; window.setAttributes(lp); View view = View.inflate(getContext(),R.layout.view_pswdialog,null); setContentView(view); pswText = findViewById(R.id.pswdialog_pswtext); CloseClick = findViewById(R.id.pswdialog_closeclick); CloseClick.setOnClickListener(CloseClicklistener); setCancelable(true); setOnDismissListener(new OnDismissListener() { @Override public void onDismiss(DialogInterface dialogInterface) { } });
软键盘显示与隐藏:
private void ShowSoftInput(){ pswText.setFocusable(true); pswText.setFocusableInTouchMode(true); pswText.requestFocus(); InputMethodManager imm = (InputMethodManager) getContext().getSystemService(Context.INPUT_METHOD_SERVICE); // 显示软键盘 imm.showSoftInput(pswText, 0); pswText.ShowKeyBord(); } private void HideSoftInput(){ if(Build.VERSION.SDK_INT >= 17){ Loger.e("getSoftButtonsBarHeight",getSoftButtonsBarHeight()+""); if(!isSoftShowing()){ return; } } // 隐藏软键盘 InputMethodManager imm = (InputMethodManager) getContext().getSystemService(Context.INPUT_METHOD_SERVICE); imm.toggleSoftInput(InputMethodManager.HIDE_NOT_ALWAYS, 0); pswText.hideKeyBord(); } @TargetApi(17) private int getSoftButtonsBarHeight() { DisplayMetrics metrics = new DisplayMetrics(); //这个方法获取可能不是真实屏幕的高度 mActivity.getWindowManager().getDefaultDisplay().getMetrics(metrics); int usableHeight = metrics.heightPixels; //获取当前屏幕的真实高度 mActivity.getWindowManager().getDefaultDisplay().getRealMetrics(metrics); int realHeight = metrics.heightPixels; if (realHeight > usableHeight) { return realHeight - usableHeight; } else { return 0; } } private boolean isSoftShowing() { //获取当前屏幕内容的高度 int screenHeight = mActivity.getWindow().getDecorView().getHeight(); //获取View可见区域的bottom Rect rect = new Rect(); mActivity.getWindow().getDecorView().getWindowVisibleDisplayFrame(rect); return screenHeight - rect.bottom != 0; }
相关文章推荐
- 解决在自定义AlertDialog中EditText无法弹出软键盘的问题
- Android学习问题:关于AlertDialog中自定义布局带有的EditText无法弹出键盘
- AlertDialog自定义view中edittext无法弹出问题
- 解决自定义Dialog无法弹出软键盘的问题
- 关于在AlertDiaLog中的Edittext无法打开软键盘问题
- android AlertDialog中EditText无法显示软键盘问题的解决方案
- 关于AlertDialog中嵌入Edittext无法弹出输入法的问题解决
- android AlertDialog中EditText无法显示软键盘问题的解决方案
- 安卓开发 自定义Dialog的问题总结之---Title背景为黑问题、edittext无法弹出软键盘
- 自定义Dialog中点击EditText无法弹出软键盘的问题
- EditText无法输入删除(手动显示隐藏软键盘/EditText无法弹出软键盘)问题
- EditText的输入法显示、隐藏和AlertDialog中的EditText无法调出输入法的问题
- 高德地图定位时,dialog无法弹出问题
- 自动隐藏软键盘和替换Fragment后软键盘无法弹出的问题
- Service启动Dialog及小米手机无法弹出Dialog问题
- Android WebView加载带有Input的输入框时点击无法弹出软键盘的问题解决
- ligerUI调用$.ligerDialog.open弹出窗口,关闭后无法获取焦点问题
- Android Dialog弹出时的软键盘弹出问题
- 关于webview点击输入框无法弹出软键盘问题
- Android实现dialog时候弹出软键盘dialog移位问题