Android EditText的setOnEditorActionListener方法——监听软键盘按键

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

1、控件EditText的setOnEditorActionListener方法的使用

setOnEditorActionListener这个方法,并不是在我们点击EditText的时候触发,也不是在我们对EditText进行编辑时触发,而是在我们编辑完之后点击软键盘上的各种键才会触发。

通过 布局文件 中的imeOptions可以控制软件盘右下角的按钮显示为不同按钮。所以和EditorInfo搭配起来可以实现各种软键盘的功能。
imeOptions=”actionUnspecified” –> EditorInfo.IME_ACTION_UNSPECIFIED
imeOptions=”actionNone” –> EditorInfo.IME_ACTION_NONE
imeOptions=”actionGo” –> EditorInfo.IME_ACTION_GO
imeOptions=”actionSearch” –> EditorInfo.IME_ACTION_SEARCH
imeOptions=”actionSend” –> EditorInfo.IME_ACTION_SEND
imeOptions=”actionNext” –> EditorInfo.IME_ACTION_NEXT
imeOptions=”actionDone” –> EditorInfo.IME_ACTION_DONE

布局中定义一个EditText控件

 <EditText
        android:id="@+id/ET_phonenumber"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_toLeftOf="@id/buttonAdd"
        android:hint="@string/enter_new_note" 
        android:imeOptions="actionDone"// 这里和onEditorAction中actionId对应。
        android:inputType="text"/>

添加setOnEditorActionListener方法

ET_phonenumber.setOnEditorActionListener(new OnEditorActionListener() {  
            @Override  
            public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {  
               if (actionId == EditorInfo.IME_ACTION_DONE) {   
                // 按下完成按钮,这里和上面imeOptions对应
                text.setText("Editing EditorInfo.IME_ACTION_DONE");  
                return false;   //返回true,保留软键盘。false,隐藏软键盘
                }
            }  
        });  

2、 android 软件盘事件响应:android: imeOptions 、KeyEvent、android: inputType

android 软件盘事件响应:
在android中,有时需要对EditText实现软件盘监听的场景。当android按下软键盘的时候,响应完成、发送、搜索或者其他事件。
Google 提供了 EditorInfo、KeyEvent 的一些方法,能够实现我们需要的功能。详细可研究:EditorInfo.class 和 KeyEvent.class.

2.1 EditorInfo

把EditText的ImeOptions属性设置成不同的值,Enter键上可以显示不同的文字或图案。
actionNone :回车键,按下后光标到下一行
actionGo : Go
actionSearch : 一个放大镜
actionSend : Send
actionNext : Next
actionDone : Done,隐藏软键盘,即使不是最后一个文本输入框

监听方法:

private final EditText.OnEditorActionListener editorActionListener =
           new TextView.OnEditorActionListener() {
               @Override
               public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
                   if (actionId == KeyEvent.ACTION_DOWN || actionId == EditorInfo.IME_ACTION_DONE) {
                       //业务代码
                       haoMent.createTest(Test.getId(), v.getText().toString());
                       UiUtils.hideSoftKeyboard(getApplicationContext(), haoTest.this);
                       v.setText("");
                       v.clearFocus();
                       handler.post(updateView);
                   }
                   return true;
               }
          };
2.2 KeyEvent

如果手机的输入法不是内置输入法,而是其他第三方输入法,那么可能会发生软件盘回车键无响应的问题。为了防止该类事情,响应的其KeyEvent。

在代码中添加事件响应:文章来源地址https://www.toymoban.com/news/detail-682747.html

 
inputKey = (EditText) findViewById(R.id.contactSearch_editText);
inputKey.addTextChangedListener(watcher);
 
inputKey.setOnKeyListener(new View.OnKeyListener() {
@Override
  public boolean onKey(View v, int keyCode, KeyEvent event) {
    
 
  if (KeyEvent.KEYCODE_ENTER == keyCode && event.getAction() == KeyEvent.ACTION_DOWN) {
    handler.post(updateView);
    return true;
  }
  return false;
  }
});
//响应键盘内容
public TextWatcher watcher = new TextWatcher() {
 
  @Override
  public void beforeTextChanged(CharSequence charSequence, int i, int i2,int i3) {
 
  }
 
  @Override
  public void onTextChanged(CharSequence charSequence, int i, int i2, int i3) {
 
  }
 
  @Override
  public void afterTextChanged(Editable editable) {
 
  handler.post(updateView);
 
  }
};
2.3 android 输入类型:android:inputType
android:inputType="none"--输入普通字符
android:inputType="text"--输入普通字符
android:inputType="textCapCharacters"--输入普通字符
android:inputType="textCapWords"--单词首字母大小
android:inputType="textCapSentences"--仅第一个字母大小
android:inputType="textAutoCorrect"--前两个自动完成
android:inputType="textAutoComplete"--前两个自动完成
android:inputType="textMultiLine"--多行输入
android:inputType="textImeMultiLine"--输入法多行(不一定支持)
android:inputType="textNoSuggestions"--不提示
android:inputType="textUri"--URI格式
android:inputType="textEmailAddress"--电子邮件地址格式
android:inputType="textEmailSubject"--邮件主题格式
android:inputType="textShortMessage"--短消息格式
android:inputType="textLongMessage"--长消息格式
android:inputType="textPersonName"--人名格式
android:inputType="textPostalAddress"--邮政格式
android:inputType="textPassword"--密码格式
android:inputType="textVisiblePassword"--密码可见格式
android:inputType="textWebEditText"--作为网页表单的文本格式
android:inputType="textFilter"--文本筛选格式
android:inputType="textPhonetic"--拼音输入格式
android:inputType="number"--数字格式
android:inputType="numberSigned"--有符号数字格式
android:inputType="numberDecimal"--可以带小数点的浮点格式
android:inputType="phone"--拨号键盘
android:inputType="datetime"
android:inputType="date"--日期键盘
android:inputType="time"--时间键盘
密码框属性 android:password="true"   让EditText显示的内容自动为星号,输入时内容会在1秒内变成*字样。

纯数字 android:numeric="true"      让输入法自动变为数字输入键盘,同时仅允许0-9的数字输入

仅允许 android:capitalize="haoTest"   仅允许接受输入haoTest,一般用于密码验证

android:editable="false"         设置EditText不可编辑

android:singleLine="true"        强制输入的内容在单行

android:ellipsize="end"         自动隐藏尾部溢出数据,一般用于文字内容过长一行无法全部显示时

到了这里,关于Android EditText的setOnEditorActionListener方法——监听软键盘按键的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • Vue页面监听 键盘按键

    1、监听方法 2、在mounted 钩子函数中调用 3、组合建 键盘keyCode:https://www.toptal.com/developers/keycode/for/arrow-left

    2024年02月15日
    浏览(29)
  • android 点击输入框editText后点击textview会弹出软键盘问题解决

    在 Android 中,当一个 EditText 或其它可以输入文本的控件获取焦点时,系统会自动弹出软键盘以便用户输入。当软键盘弹出后,点击其它控件,比如 TextView,也会触发 EditText 失去焦点的事件,从而导致软键盘关闭。这是 Android 系统默认的行为。 但是,在某些情况下,用户希望

    2024年02月15日
    浏览(40)
  • Vue中 如何监听键盘事件中的按键

    在Web前端开发中,键盘事件的处理是非常常见的需求之一。而在Vue框架中,如何监听键盘事件中的按键是一个相对简单但又很实用的功能。本文将为你介绍如何在Vue中监听键盘事件,并演示一些常用的按键操作。 首先,在Vue中监听键盘事件的方式有两种:一种是直接在DOM元素

    2024年02月20日
    浏览(33)
  • Qt键盘事件处理——如何在Qt中监听按键操作

    Qt键盘事件处理——如何在Qt中监听按键操作 在Qt中,使用键盘是很常见的操作。如何通过代码来实现键盘事件的监听和响应呢?本文将详细介绍在Qt中如何监听键盘事件,并实现一些基本的按键操作。 在Qt中,所有的键盘事件都被封装成了一个QKeyEvent对象,我们只需要在需要

    2024年02月11日
    浏览(31)
  • Android 键盘监听 键盘展开/收起监听

    Android 键盘的展开与收起一直是个很遭人诟病的东西 方法各式各样都有,但是基本都不是很好用,有各种限制 这里编写了一个优雅地实现方式,利用屏幕实际高度与显示区域的高度对比可以优雅地判断出是否弹出键盘. 众所周知键盘是会侵占实际应用的显示区域,导致实际显示区域

    2024年02月12日
    浏览(29)
  • Pygame中获取键盘按键的方法

    在Pygame中,将用户对游戏的操作叫做“事件”。键盘按键是一种事件,鼠标点击和游戏手柄的输入也是一种事件。在Pygame的子模块locals中,对这些事件进行了定义。当用户通过键盘、鼠标或者游戏手柄对游戏进行操作后,产生的这些事件都会被放在队列中。 在Pygame中获取按键

    2024年02月15日
    浏览(71)
  • Pygame中监控键盘按键的方法

    在Pygame中,将用户对游戏的操作叫做“事件”。键盘按键是一种事件,鼠标点击和游戏手柄的输入也是一种事件。在Pygame的子模块locals中,对这些事件进行了定义。当用户通过键盘、鼠标或者游戏手柄对游戏进行操作后,产生的这些事件都会被放在队列中。 在Pygame中获取按键

    2024年02月07日
    浏览(32)
  • EditText不显示系统键盘,可用来显示自定义的键盘

    系统键盘 包含普通键盘和现在很多ROM定制的密码安全键盘 调用已下方法即可解决: https://developer.android.google.cn/reference/android/widget/TextView#setShowSoftInputOnFocus(boolean) 但是,此方法是API 21Android 5.0加入的, 所以为了兼容低版本, 建议使用已下方法:  public static final boolean notShowSoftInput

    2024年04月10日
    浏览(27)
  • android系统中定义的按键码(包含键盘,游戏手柄,TV遥控器)

    数据来源:android sdk. KEYCODE_UNKNOWN         0 KEYCODE_SOFT_LEFT       1 KEYCODE_SOFT_RIGHT      2 KEYCODE_HOME            3 KEYCODE_BACK            4 KEYCODE_CALL            5 KEYCODE_ENDCALL         6 KEYCODE_0               7 KEYCODE_1               8 KEYCODE_2 

    2024年02月12日
    浏览(37)
  • Android 全局监听软键盘弹起隐藏 动态修改布局并适配无限循环的问题

    要在 Android 应用中全局检测软键盘的弹起,您可以使用 ViewTreeObserver.OnGlobalLayoutListener 监听器来监听布局树的变化。当软键盘弹起或隐藏时,布局树会发生变化,因此您可以在监听器中捕获这些变化。 在上面的代码中, rootView 是您布局的根视图,您需要将其替换为您实际布局

    2024年02月11日
    浏览(30)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包