Android EditText监听回车键并处理两次回调问题
2019/7/7 21:54:17
本文主要是介绍Android EditText监听回车键并处理两次回调问题,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
前言
我们都知道,在登面,搜索等等有EditText控件的界面上,当用户输入完内容后,点击回车键执行逻辑会有非常好的用户体验,所以今天我们来学习如何监听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监听回车键并处理两次回调问题的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-01-18android.permission.read_media_video
- 2024-01-18android_getaddrinfo failed eai_nodata
- 2024-01-18androidmo
- 2024-01-15Android下三种离屏渲染技术
- 2024-01-09Android 蓝牙使用
- 2024-01-06Android对接华为AI - 文本识别
- 2023-11-15代码安全之代码混淆及加固(Android)
- 2023-11-10简述Android语音播报TTS
- 2023-11-06Android WiFi工具类
- 2023-07-22Android开发未来的出路