记录一次软键盘不能调出来的问题

一、前提条件

设置其所在Activity,AndroidManifest.xml属性 android:windowSoftInputMode=“stateVisible|adjustResize”
EditText点击本身的话,据系统规则会调用起软键盘

二、操作表现

点击EditText,系统没有调用软键盘,不知为何原因?
故手动调用软键盘看能不能调用起来

InputMethodManager imm = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE);
imm.showSoftInput(mContentEditText, InputMethodManager.SHOW_FORCED);

发现仍然不能调用起软键盘,故Debug showSoftInput的源代码

三、追踪问题

1、只有Debug showSoftInput源代码,最终定位到

public boolean showSoftInput(View view, int flags, ResultReceiver resultReceiver) {checkFocus();synchronized (mH) {if (mServedView != view && (mServedView == null|| !mServedView.checkInputConnectionProxy(view))) {return false;}try {return mService.showSoftInput(mClient, flags, resultReceiver);} catch (RemoteException e) {throw e.rethrowFromSystemServer();}}}

发现传过来的view是EditView,没有任何问题,问题在mServedView != view返回为true,mServedView竟然为另外的view,故不能向下调用mService.showSoftInput(mClient, flags, resultReceiver)去启用软键盘

2、寻找mServedView的赋值位置

private boolean checkFocusNoStartInput(boolean forceNewFocus) {// This is called a lot, so short-circuit before locking.if (mServedView == mNextServedView && !forceNewFocus) {return false;}final ControlledInputConnectionWrapper ic;synchronized (mH) {if (mServedView == mNextServedView && !forceNewFocus) {return false;}if (DEBUG) Log.v(TAG, "checkFocus: view=" + mServedView+ " next=" + mNextServedView+ " forceNewFocus=" + forceNewFocus+ " package="+ (mServedView != null ? mServedView.getContext().getPackageName() : "<none>"));if (mNextServedView == null) {finishInputLocked();// In this case, we used to have a focused view on the window,// but no longer do.  We should make sure the input method is// no longer shown, since it serves no purpose.closeCurrentInput();return false;}ic = mServedInputConnectionWrapper;mServedView = mNextServedView;mCurrentTextBoxAttribute = null;mCompletions = null;mServedConnecting = true;}if (ic != null) {ic.finishComposingText();}return true;}

最终定位于Activity中EditView的焦点失去,导致mServedView重新被赋值,mServedView = mNextServedView;
所以… …

Android 软键盘不能弹出相关推荐

  1. android中监听软键盘的弹出与隐藏,并获取软键盘的高度

    最近项目中有一个需求上弹出软键盘的时候,输入框位移至输入框上方,但是Activity中其他的VIew都不动.这个需求需要监听软软键盘的弹出与隐藏,并获取键盘的高度.上网找了一下发现,Android竟然 ...

  2. android判断键盘是否弹出窗口,Android判断软键盘弹出并隐藏的简单完美解决方法(推荐)...

    最近项目中有一个编辑框,下面是个ListView.在触发编辑框弹出软键盘后,ListView还能滑动,并且ListView的item还能响应单击.这样的体验效果很不好.于是便想在滑动或单击item时判 ...

  3. html5自动收回键盘,如何监听移动端软键盘的弹出和收回?

    调用移动端的软键盘,一般是和TextInput的操作绑定的. 当点击输入文本框进人输入状态的时候移动端会自动调用软键盘,当输入完毕,点击输入文本框的外部区域或关闭软键盘按钮可完成软键盘收回状态的操作. ...

  4. android软键盘自动弹出,Android屏蔽软键盘自动弹出的解决方案

    问题概述 在编辑框输入内容时会弹出软键盘,而手机屏幕区域有限往往会遮住输入界面,我们先看一下问题效果图: 输入用户名和密码时,系统会弹出键盘,造成系统键盘会挡住文本框的问题,如图所示: 输入密码时输入 ...

  5. android 弹出键盘 底部控件上移,如何设置底部控件view随着软键盘的弹出而上移...

    1. 概述 在开发中,我们可能会遇到一个常见的效果,就是点击EditText输入框,软键盘随着EditText输入框同时上移,实现方式如下: 给EditText 外层添加一个 ScrollView,然 ...

  6. Android 软键盘自动弹出和关闭

    在我们写修改信息或者搜索,修改密码等界面的时候,用户进入这个界面的主要目的就是输入修改/查找 某些信息,为了用户体验应该自动弹出软键盘而不是让用户主动点击输入框才弹出. 1.软键盘的自动弹出 priv ...

  7. Andoird 软键盘的弹出、收起(二)

    键盘的展开和收起主要使用到类InputMethodManager:http://developer.android.com/reference/android/view/inputmethod/Inp ...

  8. android软键盘自动弹出,android安卓editText自动弹出软键盘(输入键盘)

    editext获取焦点并自动弹出输入键盘,代码如下: EditText  editText.setFocusable(true); editText.setFocusableInTouchMode(t ...

  9. android 监听布局改变,Android通过监听最外层布局的改变监听键盘的状态,软键盘的弹出和收起都会改变外层布局(前提是把Activity的mode设置成压缩);...

    最外层布局.addOnLayoutChangeListener(new OnLayoutChangeListener() { @Override public void onLayoutChange( ...

最新文章

  1. BZOJ 1208 宠物饲养所 Splay
  2. Web安全学习Week5
  3. 树莓派3B+运行arm_computer_library
  4. java jni librtmp_librtmp 编译集成
  5. oracle推送短信,ORACLE 10G如何实现发短信的服务?
  6. 大牛用emacs还是vim_Emacs,Vim还是其他?
  7. JS组件系列——BootstrapTable+KnockoutJS实现增删改查解决方案(三):两个Viewmodel搞定增删改查
  8. 如何还原已经推送到远程分支的合并提交?
  9. SQL夯实基础(九)MySQL联接查询算法
  10. 《TCPIP详解》卷一系列解读
  11. 物联网毕业设计 超声波雷达可视化系统
  12. java JDK11对比JDK8
  13. 超标量处理器设计 姚永斌 前言 摘录
  14. Vue框架Element UI教程
  15. matlab 模的平方,RSA模重复平方算法小示例
  16. 如何用计算机校验信息,Win10如何校验文件哈希值(系统自带方法)?
  17. 修改window本地hosts文件,修改域名指向
  18. android 自定义接口,Android中定义接口的用法
  19. 用户调查显示,Rust语言很难学习和使用
  20. R语言实现RMF模型

热门文章

  1. 如何在Outlook中显示Google日历
  2. 自动瘦脸与眼睛放大美颜算法[转载]
  3. 游戏产业,迈向防沉迷时代
  4. 【Hadoop篇】启动hdfs集群时,提示: ERROR: Cannot set priority of zkfc process 5668
  5. 九度题库 1475:IP数据包解析(北京邮电大学2012机试)
  6. 尔雅c语言答案,数据结构(C语言版)_尔雅_章节满分答案
  7. linux企业级运维----->kubernetes(3)pod资源清单
  8. linux系统怎么做备份吗,备份Linux操作系统的几种方法
  9. 揭阳市、汕尾市楹联学会举行上巳雅集暨“大洋杯” 征联颁奖典礼
  10. 最佳解决浏览器中文不兼容或中文乱码转UTF-8的方案