按下键盘上的“完成”时如何不关闭键盘

2024-02-03

当用户按下软键盘上的“完成”时,键盘关闭。我希望它只有在特定条件成立时才会关闭(例如,密码输入正确)。

这是我的代码(在按下“完成”按钮时设置监听器):

final EditText et = (EditText)findViewById(R.id.et);
et.setOnEditorActionListener(new OnEditorActionListener() 
{        
   @Override
   public boolean onEditorAction(TextView v, int actionId, KeyEvent event)
   {
      if(actionId==EditorInfo.IME_ACTION_DONE)
      {
         if (et.getText().toString().equals(password)) // they entered correct
         {
             // log them in
         }
         else
         {
             // bring up the keyboard
             getWindow().setSoftInputMode(
             WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);

             Toast.makeText(Main.this, "Incorrect.", Toast.LENGTH_SHORT).show();
         }
      }
      return false;
   }
});

我意识到这不起作用的原因可能是因为它运行此代码before它实际上会自行关闭软键盘,但这就是我需要帮助的原因。我不知道还有什么办法。

一个可能的答案主题可以是:

activityRootView.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() { 

诸如此类的事情,但我不确定。


解决方案:

EditText et = (EditText)findViewById(R.id.et);
et.setOnEditorActionListener(new OnEditorActionListener() 
{        
  @Override
  public boolean onEditorAction(TextView v, int actionId, KeyEvent event)
  {
    if(actionId==EditorInfo.IME_ACTION_DONE)
    {
       if (et.getText().toString().equals(password)) // they entered correct
       {
           // log them in
           return false; // close the keyboard
       }
       else
       {
           Toast.makeText(Main.this, "Incorrect.", Toast.LENGTH_SHORT).show();
           return true; // keep the keyboard up
       }
    }
    // if you don't have the return statements in the if structure above, you
    // could put return true; here to always keep the keyboard up when the "DONE"
    // action is pressed. But with the return statements above, it doesn't matter
    return false; // or return true
  }
});

如果你回来true从你的onEditorAction方法、动作不会被再次处理。在这种情况下你可以返回true操作时不隐藏键盘EditorInfo.IME_ACTION_DONE.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

按下键盘上的“完成”时如何不关闭键盘 的相关文章

随机推荐

  • Docker Maven Spotify 插件 - 可以切换到非安全注册表

    我正在使用Spotify Maven 插件 http mvnrepository com artifact com spotify docker maven plugin在执行某些 Maven 目标时自动构建和部署 docker 镜像 但是
  • jQuery if 语句,语法

    什么是一个简单的 jQuery 语句 该语句声明仅当 A 和 B 为 true 时操作才会继续 如果 A 不为真 则停止 如果 A 和 B 为真 则继续 jQuery 只是一个增强 Web 浏览器中 DOM 功能的库 底层语言是 JavaS
  • 使用 org.postgresql.core.Utils.escapeLiteral 足以防止 SQL 注入吗?

    在构建 SQL 查询和更新以提交到我的数据库之前 我需要清理一些用户输入的数据 我知道最好使用准备好的陈述 https www owasp org index php SQL Injection Prevention Cheat Sheet
  • 为什么 C++ 编译器不做更好的常量折叠?

    我正在研究加速大部分 C 代码的方法 该代码具有用于计算雅可比的自动导数 这涉及在实际残差中做一些工作 但大部分工作 基于分析的执行时间 是计算雅可比矩阵 这让我感到惊讶 因为大多数雅可比都是从 0 和 1 向前传播 所以工作量应该是函数的
  • 导入 R. (android)

    我已经通过 Stack Overflow 进行了搜索 因为我知道这是一个常见问题 但似乎没有一个解决方案适合我 这包括清理我的项目 删除所有导入 删除项目并完全重新开始 我正在使用 Eclipse 专门用于 mac 上的 android A
  • 使用最大流算法查找网络的边缘连通性

    我想使用最大流算法 Edmond Karp Ford Fulkerson 算法 找到无向图的边连通性 即要删除以断开图连接的最小边数 我知道我可以通过找到图的每两个节点之间的最小最大流量来完成此任务 但这将导致 O V 2 数量的流量网络
  • Twitter Bootstrap CSS 静态流体表单定位

    我正在使用 Twitter Bootstrap 框架尝试获得如下布局 现在看起来是这样的 jsFiddle 全屏 https jsfiddle net flackend YxKfc show jsFiddle https jsfiddle
  • Spring Boot 关闭钩子

    如何注册 添加在 Spring Boot 应用程序关闭时触发的自定义关闭例程 场景 我将 Spring Boot 应用程序部署到 Jetty servlet 容器 即没有嵌入式 Jetty 我的应用程序使用 Logback 进行日志记录 并
  • 夏令时持续时间

    我有一个对象Shift 有两个字段 startDateTime and endDateTime as DateTime来自乔达时间 我的轮班包括英国夏令时的变化 它开始于25 03 2017 13 00并结束于26 03 2017 02 0
  • 如何在C#中动态阻止网站?

    我想从用 C 编写的 Windows 服务动态阻止某些 URL 我不想通过写入主机文件来做到这一点 例如我想阻止该网址http example com 在所有浏览器中 但也会阻止http example com another早上 7 点到
  • Objective C /C 中的命名约定,以“_”开头?

    我看到 ppl 定义变量是这样的 b2World world b2Body body CCSprite ball 代替 b2World world b2Body body CCSprite ball 我熟悉第二个 但不熟悉第一个 于是 我查
  • css 显示:表格第一列太宽

    我有一个像这样的 css 表设置 div class table div span name span span details span div div 表格的 css 是 table display table width 100 ta
  • 获取 PrintDialog 的模式对话框句柄

    我在 net 2 0 上有一个 Windows 应用程序 在Form1 我打开一个PrintDialog 如何从我的代码中获取该对话框的句柄 我尝试了很多win32功能 EnumWindows EnumChildWindows FindWi
  • 如何禁用 React JS 应用程序的源映射

    我的反应文件夹结构如下 我没有使用过 create react app 版本 我尝试使用GENERATE SOURCEMAP false 但这没有用 在哪里可以找到 map 文件 我怎样才能删除这些文件 我找不到构建文件夹 我尝试使用下面的
  • 如果名称和日期匹配两个 API JSON 数据,如何求和?

    有两个 API 请求 URL 这是第一个 API 请求 URL 和数据来自 http 127 0 0 1 8000 api onlineUserData onlineUserData Month Amania Shyral Dorpan N
  • 将 XML 发布到经典 asp 页面并检索页面上的发布数据

    为了在经典的 ASP 页面上发布数据 我使用下面的代码 Dim stringXML httpRequest postResponse stringXML
  • 异常与验证

    我刚刚遇到一个捕获异常的属性设置器 所有异常 我知道这很糟糕 但与这里无关 并且only记录它们 首先 我认为也应该通过他们 当您可以立即知道出现问题时 为什么要等待崩溃和日志研究呢 然而 我的主要问题是 我是否要验证无效的日期值 将 Ru
  • Highcharts:图表无法通过缩小屏幕来正确调整大小

    我正在使用 HighCharts 4 0 4 并且我有一个带有自定义图例的图表 如下所示 div class wrapper div class element div div div div class legend Legend div
  • 找不到tools.jar。请检查 /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home 是否包含有效的 JDK 安装

    FAILURE Build failed with an exception What went wrong Execution failed for task react native linear gradient compileDeb
  • 按下键盘上的“完成”时如何不关闭键盘

    当用户按下软键盘上的 完成 时 键盘关闭 我希望它只有在特定条件成立时才会关闭 例如 密码输入正确 这是我的代码 在按下 完成 按钮时设置监听器 final EditText et EditText findViewById R id et