全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Android App实现监听软键盘按键的三种方式

前言:

我们在Android手机上面有时候会遇到监听手机软键盘按键的时候,例如:我们在浏览器输入url完毕后可以点击软键盘右下角的“Go”按键加载url页面;在点击搜索框的时候,点击右下角的search符号键可以进行搜索;或者在全部数据输入完毕后,点击右下角的"done"就马上进行下一步操作。

效果图:

function 1:

重写Activity的dispatchKeyEvent(KeyEvent event)方法,在其中监听KeyEventKey.KEYCODE_ENTER键(右下角确定键),当此键按下的时候,隐藏输入法软键盘,设置edittext内容和加载webview内容。

@Override 
  public boolean dispatchKeyEvent(KeyEvent event) { 
    if(event.getKeyCode() == KeyEvent.KEYCODE_ENTER){ 
      /*隐藏软键盘*/ 
      InputMethodManager inputMethodManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); 
      if(inputMethodManager.isActive()){ 
        inputMethodManager.hideSoftInputFromWindow(MainActivity.this.getCurrentFocus().getWindowToken(), 0); 
      } 
       
      edittext.setText("success"); 
      webview.loadUrl(URL); 
      return true; 
    } 
    return super.dispatchKeyEvent(event); 
  } 

function 2:

重写dispatchKeyEvent(KeyEvent event)的方法感觉有点用牛刀的感觉,因为我们非常可能在这个方法中进行其他任务,所以我们可以使用OnKeyListener的方法来监听软键盘按键。

private OnKeyListener onKeyListener = new OnKeyListener() { 
     
    @Override 
    public boolean onKey(View v, int keyCode, KeyEvent event) { 
      if(keyCode == KeyEvent.KEYCODE_ENTER && event.getAction() == KeyEvent.ACTION_DOWN){ 
        /*隐藏软键盘*/ 
        InputMethodManager inputMethodManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); 
        if(inputMethodManager.isActive()){ 
          inputMethodManager.hideSoftInputFromWindow(v.getApplicationWindowToken(), 0); 
        } 
         
        edittext.setText("success"); 
        webview.loadUrl(URL); 
         
        return true; 
      } 
      return false; 
    } 
  }; 
edittext.setOnKeyListener(onKeyListener); 

function 3:

第三种方法我认为可以帮助程序员更精确的判断右下角按键情况,以便应对更加复杂的情况。它可以帮助程序员依据当前邮件下为“GO”,“done”,“search”键的情况下做出更细分的操作。

edittext.setOnEditorActionListener(new TextView.OnEditorActionListener() { 
       
      @Override 
      public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { 
        /*判断是否是“GO”键*/ 
        if(actionId == EditorInfo.IME_ACTION_GO){ 
          /*隐藏软键盘*/ 
          InputMethodManager imm = (InputMethodManager) v 
              .getContext().getSystemService( 
                  Context.INPUT_METHOD_SERVICE); 
          if (imm.isActive()) { 
            imm.hideSoftInputFromWindow( 
                v.getApplicationWindowToken(), 0); 
          } 
           
          edittext.setText("success"); 
          webview.loadUrl(URL); 
           
          return true; 
        } 
        return false; 
      } 
    }); 

改变软键盘右下角确定键样式:

软键盘输入法的按键并不是一成不变的,例如它的右下角的“确定”键,在有搜索框的时候就会变成带搜索图标的按键,在浏览器地址栏的时候则会变成“GO”键,我们在写App的时候也可能根据情况的不同设置输入法的“确定”键,改变方法就是给EditText控件的imeOptions属性设置成不同的值(此时Enter键可以显示不同的文字和图案)。

<EditText 
    android:id="@+id/edittext" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:singleLine="true" 
    android:imeOptions="actionSearch"/> 
  • actionNone : 回车键,按下后光标到下一行
  • actionGo : Go,
  • actionSearch : 放大镜
  • actionSend : Send
  • actionNext : Next
  • actionDone : Done,确定/完成,隐藏软键盘,即使不是最后一个文本输入框

题外话:

我在写这个demo的时候,发现了webview的一个问题,就是直接使用webview.load(url)方法会在手机上面弹出系统浏览器来访问url链接,而不是我们设置的webview,我找到的解决办法就是使用webview.setWebViewClient(....)的方法来确保url会在activity的webview上面加载。

demo下载地址android-softkeyboard_jb51.rar

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# android  # 软键盘监听  # 软键盘的监听  # 按键监听  # 安卓(Android) 监听按键长按事件  # 详解React Native监听Android回退按键与程序化退出应用  # Android 中的监听和按键处理详情  # 会在  # 加载  # 重写  # 按下  # 方法来  # 就会  # 我在  # 下载地址  # 完毕后  # 回车键  # 我们可以  # 我认为  # 弹出  # 它可以  # 种方法  # 一个问题  # 可以帮助  # 解决办法  # 则会  # 大家多多 


相关文章: C++用Dijkstra(迪杰斯特拉)算法求最短路径  建站主机选择指南:服务器配置与SEO优化实战技巧  如何通过智能用户系统一键生成高效建站方案?  ,石家庄四十八中学官网?  香港服务器网站推广:SEO优化与外贸独立站搭建策略  ui设计制作网站有哪些,手机UI设计网址吗?  沈阳个人网站制作公司,哪个网站能考到沈阳事业编招聘的信息?  深入理解Android中的xmlns:tools属性  Python如何创建带属性的XML节点  建站org新手必看:2024最新搭建流程与模板选择技巧  网站建设制作、微信公众号,公明人民医院怎么在网上预约?  建站之星IIS配置教程:代码生成技巧与站点搭建指南  天津个人网站制作公司,天津网约车驾驶员从业资格证官网?  如何在万网ECS上快速搭建专属网站?  建站之星3.0如何解决常见操作问题?  建站主机功能解析:服务器选择与快速搭建指南  盐城做公司网站,江苏电子版退休证办理流程?  ,有什么在线背英语单词效率比较高的网站?  官网自助建站系统:SEO优化+多语言支持,快速搭建专业网站  手机网站制作与建设方案,手机网站如何建设?  建站之星Pro快速搭建教程:模板选择与功能配置指南  如何续费美橙建站之星域名及服务?  深圳企业网站制作设计,在深圳如何网上全流程注册公司?  PHP正则匹配日期和时间(时间戳转换)的实例代码  如何确保西部建站助手FTP传输的安全性?  官网建站费用明细查询_企业建站套餐价格及收费标准指南  深圳防火门网站制作公司,深圳中天明防火门怎么编码?  百度网页制作网站有哪些,谁能告诉我百度网站是怎么联系?  制作电商网页,电商供应链怎么做?  网站设计制作书签怎么做,怎样将网页添加到书签/主页书签/桌面?  网站制作专业公司有哪些,如何制作一个企业网站,建设网站的基本步骤有哪些?  建站10G流量真的够用吗?如何应对访问高峰?  网站制作服务平台,有什么网站可以发布本地服务信息?  c# 服务器GC和工作站GC的区别和设置  如何在橙子建站中快速调整背景颜色?  自助网站制作软件,个人如何自助建网站?  香港服务器网站卡顿?如何解决网络延迟与负载问题?  图册素材网站设计制作软件,图册的导出方式有几种?  深圳 网站制作,深圳招聘网站哪个比较好一点啊?  小视频制作网站有哪些,有什么看国内小视频的网站,求推荐?  网站制作软件有哪些,制图软件有哪些?  威客平台建站流程解析:高效搭建教程与设计优化方案  如何正确下载安装西数主机建站助手?  建站之星安装后如何自定义网站颜色与字体?  GML (Geography Markup Language)是什么,它如何用XML来表示地理空间信息?  猪八戒网站制作视频,开发一个猪八戒网站,大约需要多少?或者自己请程序员,需要什么程序员,多少程序员能完成?  装修招标网站设计制作流程,装修招标流程?  长沙做网站要多少钱,长沙国安网络怎么样?  建站之星伪静态规则如何设置?  如何通过虚拟机搭建网站?详细步骤解析 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。