温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Android中怎么利用 EditText监听回车键并处理两次回调

发布时间:2021-06-09 17:24:56 来源:亿速云 阅读:468 作者:Leah 栏目:移动开发

Android中怎么利用 EditText监听回车键并处理两次回调?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

首先我们在xml布局中添加一个要监听的EditText

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_width="match_parent"
 android:layout_height="match_parent">

 <EditText
  android:id="@+id/et_text"
  android:layout_width="match_parent"
  android:layout_height="wrap_content" />
</LinearLayout>

要想监听到软键盘按下什么键,就需要使用setOnKeyListener方法,在Activity中,我们编写监听代码

@Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main2);

  EditText et = findViewById(R.id.et_text);
  et.setOnKeyListener(new View.OnKeyListener() {
   @Override
   public boolean onKey(View v, int keyCode, KeyEvent event) {
    return false;
   }
  });
 }

接下来在onKey方法中监听回车键

@Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main2);

  EditText et = findViewById(R.id.et_text);
  et.setOnKeyListener(new View.OnKeyListener() {
   @Override
   public boolean onKey(View v, int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_ENTER){
     Log.e("MainActivity", "onKey: 按下回车键");
     return true;
    }
    return false;
   }
  });
 }

我们运行起来,并在EditText中点击回车键,会看到如下日志

E/MainActivity: onKey: 按下回车键
E/MainActivity: onKey: 按下回车键

为什么我们会看到两次日志输入呢?

两次回调解答并解决

我们都知道,当我们按某个键的时候,键盘有按下和抬起两个操作,所以这里两次回调就是回车按下时,回调一次,回车键抬起时,回调一次。

要解决这个办法非常简单,我们只需要多加一个条件判断,是抬起还是按下即可

@Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main2);

  EditText et = findViewById(R.id.et_text);
  et.setOnKeyListener(new View.OnKeyListener() {
   @Override
   public boolean onKey(View v, int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_ENTER && event.getAction() == KeyEvent.ACTION_UP) {
     Log.e("MainActivity", "onKey: 按下回车键");
     return true;
    }
    return false;
   }
  });
 }

我们再运行看看,点击回车后,日志输出

E/MainActivity: onKey: 按下回车键

也可以修改editText的回车样式,即是把EditText的ImeOptions属性设置成不同的值,Enter键上就会显示不同的文字或图案

actionNone : 回车键,按下后光标到下一行
actionGo : Go,
actionSearch : 一个放大镜
actionSend : Send
actionNext : Next
actionDone : Done,隐藏软键盘,即使不是最后一个文本输入框

关于Android中怎么利用 EditText监听回车键并处理两次回调问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注亿速云行业资讯频道了解更多相关知识。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI