EditText不显示系统键盘,可用来显示自定义的键盘

这篇具有很好参考价值的文章主要介绍了EditText不显示系统键盘,可用来显示自定义的键盘。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

系统键盘 包含普通键盘和现在很多ROM定制的密码安全键盘

调用已下方法即可解决:
https://developer.android.google.cn/reference/android/widget/TextView#setShowSoftInputOnFocus(boolean)

android edittext 显示自定义键盘,android,软键盘,edittext,EditText,自定义键盘,系统键盘

但是,此方法是API 21Android 5.0加入的, 所以为了兼容低版本, 建议使用已下方法:

 public static final boolean notShowSoftInput(EditText editText) {
      boolean flag = false;

      InputMethodManager imm = (InputMethodManager) editText.getContext()
              .getSystemService(Context.INPUT_METHOD_SERVICE);
      boolean isOpen = imm.isActive();// isOpen若返回true,则表示输入法打开
      if (isOpen) {
          if (imm.hideSoftInputFromWindow(editText.getWindowToken(), 0))
              flag = true;
      }

//        act.getWindow().setSoftInputMode(
//                WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
      int currentVersion = android.os.Build.VERSION.SDK_INT;
      String methodName = null;
      if (currentVersion >= 16) {
          // 4.2
          methodName = "setShowSoftInputOnFocus";
      } else if (currentVersion >= 14) {
          // 4.0
          methodName = "setSoftInputShownOnFocus";
      }

      if (methodName == null) {
          editText.setInputType(InputType.TYPE_NULL);
      } else {
          Class<EditText> cls = EditText.class;
          Method setShowSoftInputOnFocus;
          try {
              setShowSoftInputOnFocus = cls.getMethod(methodName,
                      boolean.class);
              setShowSoftInputOnFocus.setAccessible(true);
              setShowSoftInputOnFocus.invoke(editText, false);
          } catch (NoSuchMethodException e) {
              editText.setInputType(InputType.TYPE_NULL);
              e.printStackTrace();
          } catch (IllegalAccessException e) {
              e.printStackTrace();
          } catch (IllegalArgumentException e) {
              e.printStackTrace();
          } catch (InvocationTargetException e) {
              e.printStackTrace();
          }
      }
      return flag;
  }

4.2低版本中有一个setSoftInputShownOnFocus方法, 但是被声明成hide了, 所以通过反射调用.
再低一点的版本,直接通过setInputType的方式兼容.

以上方法调用后, EditText获取到焦点时,就不会弹出系统的键盘了.
然后弹出自定义的键盘,就可以完美解决冲突了.

翻译

搜索

复制文章来源地址https://www.toymoban.com/news/detail-846920.html

到了这里,关于EditText不显示系统键盘,可用来显示自定义的键盘的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Android点击EditText禁止弹出软键盘

    今天做了一个点击EditText获取焦点,不弹出设备系统键盘,只弹出自定义键盘,在网上能查到很多实现这一功能的方法,试了很多,只有一种对我来说是好用的,做个记录方便以后使用 方法一:这个对我来说好用的,也是唯一一个好用的,还会多分享几个网上说的一些好用的

    2024年02月11日
    浏览(26)
  • Android EditText的setOnEditorActionListener方法——监听软键盘按键

    1、控件EditText的setOnEditorActionListener方法的使用 setOnEditorActionListener这个方法,并不是在我们点击EditText的时候触发,也不是在我们对EditText进行编辑时触发,而是在我们编辑完之后点击软键盘上的各种键才会触发。 通过 布局文件 中的imeOptions可以控制软件盘右下角的按钮显示

    2024年02月10日
    浏览(33)
  • Android T 远程动画显示流程其二——系统侧动画启动流程

    接着上篇文章分析 Android T 远程动画显示流程其一 下面,我们以从桌面点击一个应用启动的场景来分析远程动画的流程,窗口添加的流程见Android T WMS窗口相关流程 这里我们从AppTransitionController.handleAppTransitionReady方法开始跟踪代码流程 代码路径:framework/services/core/java/com/and

    2024年03月28日
    浏览(32)
  • Android打开系统相机或从相册中选择图片并显示

    xml代码 展示  java代码 实机演示  

    2024年02月11日
    浏览(41)
  • Android 进阶——图形显示系统之VSync和 Choreographer的创建详解(一)

    前一篇文章Android 进阶——图形显示系统之底层图像显示原理小结(一)介绍了关于Android 图形显示系统的基础理论,相信你对于Android的图形显示系统中图形界面渲染刷新机制有了更深的了解,接下来进一步讲解VSync和Choreography的联系和作用。 VSync 可以提升Android 图形显示效果

    2024年02月10日
    浏览(31)
  • Android 12.0 系统设置显示主菜单添加屏幕旋转菜单实现旋转屏幕功能

     在android12.0的系统rom定制化开发中,在对系统设置进行定制开发中,有产品需求要求增加 旋转屏幕功能的菜单,就是在点击旋转屏幕菜单后弹窗显示旋转0度,旋转 90度,旋转180度, 旋转270度针对不同分辨率的无重力感应的大屏设备的屏幕旋转功能的实现, 接下来就来分析

    2024年02月09日
    浏览(39)
  • 解决Mac系统android monitor启动时卡住,显示白屏的问题

    清安装1.8版本的jdk,java1.8版本以上不支持android monitor;如果你电脑上安装有java 11等高级别的版本,请自行搜索,如果在mac上安装多jdk,以及如何切换到1.8版本上 请更新SWT插件,下载地址; 1.打开网页,点击4.9 跳转到另外的网页  2.跳转到的网页如下所示意   3. 点击下载此版

    2024年02月12日
    浏览(25)
  • Android 12.0 系统systemui状态栏下拉左滑显示通知栏右滑显示控制中心模块的流程分析

      在android12.0的系统rom定制化开发中,在系统原生systemui进行自定义下拉状态栏布局的定制的时候,需要在systemui下拉状态栏下滑的时候,根据下滑坐标来 判断当前是滑出通知栏还是滑出控制中心模块,所以就需要根据屏幕宽度,来区分x坐标值为多少是左滑出通知栏或者右滑

    2024年02月09日
    浏览(41)
  • Android 10.0 系统systemui状态栏下拉左滑显示通知栏右滑显示控制中心模块的流程分析

      在android10.0的系统rom定制化开发中,在系统原生systemui进行自定义下拉状态栏布局的定制的时候,需要在systemui下拉状态栏下滑的时候,根据下滑坐标来 判断当前是滑出通知栏还是滑出控制中心模块,所以就需要根据屏幕宽度,来区分x坐标值为多少是左滑出通知栏或者右滑

    2023年04月09日
    浏览(45)
  • Android 11.0 系统修改usb连接电脑mtp和PTP的显示名称

      在11.0的系统产品rom定制化开发中,在usb模块otg连接电脑,调整为mtp文件传输模式的时候,这时可以在电脑看到手机的内部存储 显示在电脑的盘符中,会有一个mtp名称做盘符,所以为了统一这个名称,就需要修改这个名称,接下来分析下处理的方法来解决这个问题 MTP的全称

    2024年01月17日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包