Android 更改软键盘右下角按键的样式以及监听此键的方法

Android进阶之路 - 软键盘中右下角的设置与监听 在项目中,多多少少会遇到修改软键盘右下角按钮的需求,虽然已经写过几次,但是还是觉得在这里专心做个笔记比较放心。 阅读详情

一、我们在开发Android App时有时候会遇到更改软键盘右下角按键的样式
我们可以随自己的需求更改软键盘右下角的显示样式,例如:搜索,下一步,Q(搜索图标) 
具体对应: 
actionNone : 按下后光标到下一行(回车)
actionGo : 按下后搜索(Go)
actionSearch : 放大镜
actionSend : Send 按下后发送
actionNext : Next 下一步
actionDone : Done,确定/完成,隐藏软键盘(包括不是最后一个文本输入框的情况也会隐藏) 
使用方法: 
在xml里面写布局时直接加给EditTxt的imeOptions属性,例如:
<EditText  
        android:id="@+id/et"  
        android:layout_width="match_parent"  
        android:layout_height="wrap_content"  
        android:imeOptions="actionSearch"/>

注:此时会发现并比起作用,这是因为少设置一个参数,既添加属性 android:singleLine="true"(因为默认是多行模式,而右下角的按键是用于换行的,当设置为单行模式后就没必要换行了)
二、我们在开发Android App时有时候还会遇到监听软键盘右下角按键的需求
例如我们在EditText里面输入内容后可以点击软键盘右下角的“搜索”按键进行搜索,或者在输入完毕后,点击右下角的"done"就马上进行下一步操作(例如将内容上传到服务器)。
1
下面列举几个方法:
重写Activity的dispatchKeyEvent(KeyEvent event)方法,在其中监听KeyEventKey.KEYCODE_ENTER键(右下角确定键),当此键按下的时候,隐藏输入法软键盘,将EditText内容上传到服务器 
例如:
    @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);  
                }  
                // 上传代码 
                return true;  
            }  
            return super.dispatchKeyEvent(event);  
        }  

重写dispatchKeyEvent(KeyEvent event),这种方法,因为我们可能在这个方法中进行其他任务,所以我们可以使用OnKeyListener的方法来监听软键盘按键。
et.setOnKeyListener(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 imm= (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);  
                  if(imm.isActive()){  
                      imm.hideSoftInputFromWindow(v.getApplicationWindowToken(), 0);  
                  }  
                 // 对应逻辑操作
                  return true;  
              }  
              return false;  
          }  
      };  

第三种方法,更加细化,我们可以解决更加复杂的情况。我们可以根据右下键是“GO”,“Done”,“Search”键的情况下做出更加具体的操作。 
代码案例:
    et.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);  
                        }  
                        // 对应逻辑操作
                        return true;  
                    }  
                    return false;  
                }  
            });  
 

【信息科学与工程学】计算机科学与自动化——第六十三篇 人机交互之前端交互参数知识库01 此方案可满足千万级并发需求,同时支持时序数据、知识图谱和文档数据库的高效处理,通过云原生架构实现极致弹性。​:每月约$15-20万(100节点K8s集群+数据库集群+CDN流量)1. 宠物上架/下架流程。 阅读详情

相关推荐

Android系统修改AOSP输入法默认输入语言

修改方法是在frameworks\base\packages\SettingsProvider\src\com\android\providers\settings\DatabaseHelper.java中添加ENABLED_INPUT_METHODS属性的设置语句。然后在frameworks\base\packages\SettingsProvider\res\values\defaults.xml中添加输入法包名和服务名后面加输入语言的哈希值。-921088104对应的是en_US,即美式英语。

Android系统开发笔记 4508

Android 系统源码修改键盘的默认主题样式

需求: 设置键盘默认主题为Holo Blue, 并且在设置中的 -&gt; 语言和输入法中 -&gt; 虚拟键盘 -&gt; AOSP -&gt; 布局中 -》 主题(Theme) 默认选中 Holo Blue; 该需求基于: Android 7.0系统,MTK 平台; 1. 定位源码文件位置: /packages/inputmethods/LatinIME/java/src/co...

路文 的博客 5225

win10+conda+pytorch-gpu安装

pytorch 官网上只有linux和Mac的程序包,没有windows系统的,但是windows系统还是可以用pytorch的。  github: https://github.com/peterjc123/pytorch-scripts 首先要安装anaconda: 推荐清华镜像 https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/ ...

一摩尔自由的博客 1万+

Android键盘 AOSP监听delete按键

转载:http://stackoverflow.com/questions/4886858/android-edittext-deletebackspace-key-event用搜狗输入法监听delete按键,EditText设置setOnKeyListener,onKey中,keyCode为KeyEvent.KEYCODE_DEL就是delete按键 editText.setOnKeyListen

jieqiong1的博客 3860

Oracle19c集群节点故障恢复:从主机重装到重新加入集群的完整指南

本文详细介绍了Oracle19c集群节点故障恢复的全过程,从主机重装到重新加入集群的完整指南。重点讲解了保持集群配置一致性、彻底清理故障节点残留信息和分阶段验证等关键恢复原则,帮助DBA高效解决节点故障问题,确保集群稳定运行。

weixin_42524276的博客 255

地瓜派RDK X5部署YOLOv11n避坑指南:从Softmax瓶颈到BPU加速的实战解析

本文详细解析了在地瓜派RDK X5开发板上部署YOLOv11n模型时,从性能暴跌到成功优化的全过程。核心在于通过配置`node_info`将模型中的Softmax算子强制在BPU上以int16精度运行,解决了因算子被分配到CPU导致的严重性能瓶颈。实战部署后,模型推理延迟从126ms降至10.8ms,FPS从7.9提升至92.3,实现了显著的性能优化。

beta5的博客 865

[笔记]安卓系统样式主题style theme定位这里举例对话框样式Theme_Dialog_Alert源码定位...

C:\sdk\Android\platforms\android-32\data\res\values image.png 处理文件: C:\sdk\Android\platforms\android-25\data\res\values\symbols.xml 行号 1422 - <java-symbol type="style" name="<Theme.Dialog...

情随事迁个人博客 467

Win10系统内存占用异常飙升?三步排查法快速定位问题根源

本文针对Win10系统内存占用异常飙升问题,提供了一套三步排查法。首先利用任务管理器和资源监视器进行深度系统体检,定位隐形内存消耗者;其次通过干净启动和禁用非必要后台服务,揪出导致内存泄漏的第三方软件或驱动;最后进行终极深度清理,包括检查内存完整性、调整虚拟内存设置以及更新关键驱动程序,帮助用户快速恢复系统流畅运行。

weixin_29251567的博客 194

Android App监听软键盘按键的三种方式 以及 输入法删除退格键的冲突问题解决

输入法删除退格键的冲突问题解决 /**       *返回键处理        */       @Override       public boolean onKeyDown(int keyCode, KeyEvent event) {           if( event.getKeyCode() == KeyEvent.KEYCODE_BACK) 

zj的博客 1870

金蝶Apusic应用服务器 未授权目录遍历漏洞复现

由于金蝶Apusic应用服务器/admin/protected/selector/server_file/files、/admin/protected/selector/server_file/folders 等接口没有进行校验和过滤,直接将参数拼接到文件操作中,导致出现目录遍历漏洞,未经身份验证的远程攻击者可通过此漏洞读取系统内部系统文件路径及信息,导致信息泄露,系统处于极不安全状态。

0xSec 2165

利用XGBoost实现短期电力负荷预测

本数据集为某地区2009年-2015年的用电负荷,时间片为每分钟这里我们定义了XGB模型作为实例,来进行模型训练,之后我们会对其使用网格搜索找到最优的参数。

优快云 精品推荐 4494

更改软键盘右下角确定键样式,显示软键盘时布局往上推

显求软键盘时布局往上推有2个方法     方法一     在你的activity中的oncreate中setContentView之前写上这个代码         getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);        方法二         在 项目的Android

qq_35890792的博客 688

基于深度学习的堰塞坝表层颗粒物质识别研究

本文提出一种基于深度学习的堰塞坝表层颗粒物质智能识别方法,针对颗粒分布散乱、背景复杂的问题,采用"大颗粒逐个识别、密集小颗粒分块识别"策略。结合Mask R-CNN、SLIC和AlexNet构建识别模型,通过无人机影像实现自动识别。实验表明该方法精度超过90%,具备迁移能力。文章提供了Python实现代码,涵盖数据预处理、SLIC分割、模型构建(Mask R-CNN和AlexNet)及训练流程,为堰塞坝应急抢险提供技术支持。

huanghm88的专栏 181

Android实现监听回车键(附带源码)

Android实现监听回车键(附带源码)

欢迎来到我的博客!这里是一个专注于计算机技术的分享平台,涵盖编程开发、算法研究、系统架构、软件工程等多个领域。无论你是初学者还是资深开发者,都能在这里找到有价值的内容。 1388

【WRF数据准备】基于Python更新geo_em.d0.nc文件中Albedo/LAI等静态地理数据

基于Python更新geo_em.d0.nc文件中Albedo/LAI等静态地理数据

WW、forever的博客 589

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

探究 Android 调用软键盘搜索,setOnKeyListener 事件执行两次

一、EditText调用软键盘搜索 setOnKeyListener 事件为什么执行了两次? etProjectName.setOnKeyListener(new View.OnKeyListener() { @Override public boolean onKey(View v, int keyCode, KeyEvent event) { if (keyCode...

LXB-89 939

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Android EditText输入框的使用(很详细很基础)

关于Android手机的各类输入框,在编辑多行文本,文本块,统一使用的是EditText,这也是我们使用的最多的常用控件之一,在此做一个简单的总结。 一、基础属性 首先,EditText作为一个控件,他是继承于View的,所以他具有View的很多属性及方法。当然,现在出了个AppCompatEditText,它是继承于EditText的,加了一些外观的处理,其余的用法那些一模一样。 在写Xml界面时,我们可以通过Android:,tools:,自定义属性等等为其定义各种属性。这些属性可以确定他的..

Android 领域开发程序员,希望通过写博客的方式不断的总结提升自己,大家共同进步哦! 6484

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

EditText横屏时,弹出软件盘时不进行全屏

在使用EditText进行文本输入时,若不进行特殊的设置,使用Android自带的软键盘,该软键盘会占用整个界面,那么,如何让键盘只占用屏幕的一部分呢?  Xml代码   &lt;EditText        android:id="@+id/text1"        android:layout_width="150dip"        android:layo...

doloveme的专栏 178

EditText弹出软件盘时不进行全屏

在使用EditText进行文本输入时,若不进行特殊的设置,使用Android自带的软键盘,该软键盘会占用整个界面,那么,如何让键盘只占用屏幕的一部分呢? [code="java"][/code] 使用android:imeOptinos可对Android自带的软键盘进行一些界面上的设置: [code="java"]android:imeOptions="flagNoExtract...

我思故我在 313

短视频直播源码,EditText输入框的使用

短视频直播源码,EditText输入框的使用 一、基础属性 首先,EditText作为一个控件,他是继承于View的,所以他具有View的很多属性及方法。当然,现在出了个AppCompatEditText,它是继承于EditText的,加了一些外观的处理,其余的用法那些一模一样。在写Xml界面时,我们可以通过Android:,tools:,自定义属性等等为其定义各种属性。这些属性可以确定他的宽高,行数,输入限制等等,常见的用法如下: 上边是输入框/编辑栏常用的一些属性,还有一些其他的,不咋用,就不深究了。二

云豹网络科技 543

Android AOSP LatinIME输入法自定义图片按钮

LatinIME是android aosp中的一个开源输入法项目,利用该输入法可以完成多个国外语言的切换和输入,非常方便。本文就是实现在这个项目的基础上添加一个自定义按键,完成自己需要的功能。

蓝家彬的博客 3032

【AOSP输入法】Android TV 7.0添加AOSP输入法(LatinIME)后,编辑文本BACK键返回出现红色下划线的解决办法

问题描述:Android TV默认Leanback Keyboard键盘,使用mm命令将AOSP输入法编译系统后,在使用前两者任一个输入法后按下BACK返回键某些情况下,输入的英文文本始终会出现一个红色下划线(无论拼写对错,而其他语言不会),并且使用Android Studio直接在未将AOSP输入法编译进系统的系统中进行AOSP输入法安装是不会出现红色下划线的。问题分析:红色下划线看起来像是Sp...

heyzqt 3407

Android keyboardView字体样式修改

问题 问题原因 解决办法问题使用自定义键盘的时候发现: 显示的键盘上的字体好像不对,被加了阴影。 并且键盘上有>1个字符的键上的文案(key.labels==”00”这种)还被加粗了。 后来找到了解决办法,这里说一下。 问题原因 keyboardView自己会在未设置ShadowRadius和ShadowColor的keyboardView绘制键盘上的text的时候加一个阴影; 对于label

咩哈哈喵喵喵 7141

android keyboardview去掉点击效果,KeyboardView is deprecated in android

问题KeyboardView has been deprecated official by android team in API level 29 and i didn't able to find the alternative way for this. Please let me know if there any alternative?回答1:From the docs here :...

weixin_32927133的博客 586

Android源码AOSP之设置Settings阅读记录

Android 4.4 系统的设置源码阅读记录----------2014-7-3------------------AndroidManifest.xmllaunch的activity是Settings,另外有40多个activity继承于它,比如设置的一级菜单: wifi,蓝牙,声音,显示,安全,应用程序,语言和时间,关于设备等等。实际上都是这一个acitivy。这里从...

weixin_33894640的博客 1258
上一篇: getResources().getDisplayMetrics().heightPixels获取到的屏幕高度不对
下一篇: apk下载服务器,文件服务器,apache 文件服务器
束千凡
博客等级 码龄14年 21粉丝 56原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值