默认情况下软键盘右下角的按钮为“下一个”,点击会到下一个输入框,保持软键盘

设置 android:imeOptions="actionDone" ,软键盘下方变成“完成”,点击后光标保持在原来的输入框上,并且软键盘关闭

android:imeOptions="actionSend" 软键盘下方变成“发送”,点击后光标移动下一个


 
在这里设置的imeOptions如何使用呢?如下面的代码,让EditText实现setOnEditorActionListener,在onEditAction方法中actionId就对应我们设置的imeOptions。系统默认的actionId有:EditorInfo.IME_NULL、EditorInfo.IME_ACTION_SEND、EditorInfo.IME_ACTION_DONE等。这样我们就可以根据不同的EditText来实现不同的软键盘右下角功能键。
Java代码  
  1. package com.test;
  2. import com.test.main.TestAsyn;
  3. import android.app.Activity;
  4. import android.os.Bundle;
  5. import android.view.KeyEvent;
  6. import android.view.inputmethod.EditorInfo;
  7. import android.widget.EditText;
  8. import android.widget.TextView;
  9. import android.widget.TextView.OnEditorActionListener;
  10. import android.widget.Toast;
  11. public class IMFActivity extends Activity implements OnEditorActionListener {
  12. EditText etDefault;
  13. EditText etEmail;
  14. EditText etNumber;
  15. /** Called when the activity is first created. */
  16. @Override
  17. public void onCreate(Bundle savedInstanceState) {
  18. super.onCreate(savedInstanceState);
  19. setContentView(R.layout.imf_layout);
  20. etDefault = (EditText)findViewById(R.id.default_content);
  21. etEmail = (EditText)findViewById(R.id.email_content);
  22. etNumber = (EditText)findViewById(R.id.number_content);
  23. etDefault.setOnEditorActionListener(this);
  24. etEmail.setOnEditorActionListener(this);
  25. etNumber.setOnEditorActionListener(this);
  26. }
  27. @Override
  28. public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
  29. switch(actionId){
  30. case EditorInfo.IME_NULL:
  31. System.out.println("null for default_content: " + v.getText() );
  32. break;
  33. case EditorInfo.IME_ACTION_SEND:
  34. System.out.println("action send for email_content: "  + v.getText());
  35. break;
  36. case EditorInfo.IME_ACTION_DONE:
  37. System.out.println("action done for number_content: "  + v.getText());
  38. break;
  39. }
  40. //Toast.makeText(this, v.getText()+"--" + actionId, Toast.LENGTH_LONG).show();
  41. return true;
  42. }
  43. }
xml文件:
Xml代码  
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:layout_width="fill_parent" android:layout_height="fill_parent">
  4. <TableLayout android:layout_width="fill_parent"
  5. android:layout_height="fill_parent">
  6. <TableRow>
  7. <TextView android:text="No special rules" android:id="@+id/TextView01"
  8. android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView>
  9. <EditText android:text="1111111111111" android:id="@+id/default_content"
  10. android:layout_width="fill_parent" android:layout_height="wrap_content"></EditText>
  11. </TableRow>
  12. <TableRow>
  13. <TextView android:text="Email address:" android:id="@+id/TextView01"
  14. android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView>
  15. <EditText android:text="" android:id="@+id/email_content"
  16. android:layout_width="fill_parent" android:layout_height="wrap_content"
  17. android:inputType="text|textEmailAddress"
  18. android:imeOptions="actionSend"></EditText>
  19. </TableRow>
  20. <TableRow>
  21. <TextView android:text="Signed decimal number:" android:id="@+id/TextView01"
  22. android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView>
  23. <EditText android:text="" android:id="@+id/number_content"
  24. android:layout_width="fill_parent" android:layout_height="wrap_content"
  25. android:inputType="number|numberSigned|numberDecimal"
  26. android:imeOptions="actionDone"></EditText>
  27. </TableRow>
  28. </TableLayout>
  29. </ScrollView>

http://www.apkbus.com/forum.php?mod=viewthread&tid=45005

实现android按下回车键便隐藏输入键盘,有两种方法:

1.)如果布局是多个EditText,为每个EditText控件设置android:singleLine=”true”,弹出的软盘输入法中回车键为next,直到最后一个获取焦点后显示为Done,点击Done后,软盘输入键盘便隐藏。或者将EditText的imeOptions属性设置android:imeOptions=”actionDone”,则不管是不是最后一个EditText,点击回车键即隐藏输入法。

2.)监听Enter的事件,编写Enter的事件响应。设置文本框的OnKeyListener,当keyCode ==KeyEvent.KEYCODE_ENTER的时候,表明Enter键被按下,就可以编写自己事件响应功能了。

代码源:
<ignore_js_op> EnterListenter.rar (40.68 KB, 下载次数: 65) 
具体代码:

  1. package listenter.main;
  2. import android.app.Activity;
  3. import android.content.Context;
  4. import android.os.Bundle;
  5. import android.view.KeyEvent;
  6. import android.view.View;
  7. import android.view.View.OnKeyListener;
  8. import android.view.inputmethod.InputMethodManager;
  9. import android.widget.EditText;
  10. public class EnterListenter extends Activity {
  11. /** Called when the activity is first created. */
  12. @Override
  13. public void onCreate(Bundle savedInstanceState) {
  14. super.onCreate(savedInstanceState);
  15. setContentView(R.layout.main);
  16. EditText password=(EditText)findViewById(R.id.password);
  17. password.setOnKeyListener(onKey);
  18. }
  19. OnKeyListener onKey=new OnKeyListener() {
  20. @Override
  21. public boolean onKey(View v, int keyCode, KeyEvent event) {
  22. // TODO Auto-generated method stub
  23. if(keyCode == KeyEvent.KEYCODE_ENTER){
  24. InputMethodManager imm = (InputMethodManager)v.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
  25. if(imm.isActive()){
  26. imm.hideSoftInputFromWindow(v.getApplicationWindowToken(), 0 );
  27. }
  28. return true;
  29. }
  30. return false;
  31. }
  32. };
  33. }

复制代码

<ignore_js_op>

图-1 点击回车键隐藏键盘

PS:

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

searchEdit.setOnEditorActionListener(new OnEditorActionListener() {

@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
switch (actionId) {
case EditorInfo.IME_NULL:
if(!(event.getAction() == KeyEvent.ACTION_UP && event.getKeyCode()==KeyEvent.KEYCODE_ENTER))
break;
case EditorInfo.IME_ACTION_GO:
case EditorInfo.IME_ACTION_DONE:
case EditorInfo.IME_ACTION_SEARCH:
// System.out.println("action done for number_content: " + v.getText());
InputMethodManager imm = (InputMethodManager) v.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);

if (imm.isActive()) {
imm.hideSoftInputFromWindow(v.getApplicationWindowToken(), 0);
}
ServiceSearch.cond.key = searchEdit.getText().toString();
// log.e("", "Search key down: search key is:"+ServiceSearch.cond.key);
refreshSverListView(ServiceSearch.search());

break;
}
// Toast.makeText(TaskRabbit_HomePageActivity.this, v.getText() + "--" + actionId, Toast.LENGTH_LONG).show();
return true;
}
});

android 回车键事件编程相关推荐

  1. android触摸事件分发,Android 事件分发机制

    Android 事件分发机制一直让人头痛,之前也是面向 GitHub 编程得过且过.今天下定决心了解一下,以便后面自己定制 View 效果.Android 触摸事件有三个基本类型:ACTION_DOW ...

  2. Android 4高级编程(第3版)》

    <Android 4高级编程(第3版)> 基本信息 原书名:Professional Android 4 Application Development 作者: (英)Reto Meier ...

  3. Android 4高级编程(第3版)

    <Android 4高级编程(第3版)> 基本信息 原书名:Professional Android 4 Application Development 作者: (英)Reto Meier ...

  4. Android触摸事件实现笔触画布

    任何View都有触摸事件,经常在自定义控件时重写setOnTouchListener 本篇通过手绘图片来讲述这个知识点 本篇分为三个等级:一览图: 直线 曲线 笔触 LEVEL1.png LEVEL2 ...

  5. 《Android 4高级编程(第3版)》(完整书签).pdf

    下载地址:网盘下载 内容简介 编辑 <Android 4高级编程(第3版)>由Android权威专家编写,涵盖了所有最新的内容,是学习使用Android 4 SDK开发移动应用程序的理想指 ...

  6. Android输入事件从读取到分发四:InputDispatcherThread发送事件到View结构树的过程

    通过上一节的分析,我们发现InputDispatcherThread使用InputChannel的sendMessage方法发送了一条消息,但是我们不知道谁在接收这条消息.因此,这一节我们的目标很明确 ...

  7. 什么是Android - 嵌入式设备编程的历史

    -第一章 暂时可以这样说,传统的桌面 应用程序 开发者已经被惯坏了.这个不是说桌面应用程序开发比其他开发很简单.总之作为桌面应用程序开发者,我们已经有能力按照我们的想法创造出各种应用程序.包括我自己, ...

  8. android 点击事件消费,Android View事件分发和消费源码简单理解

    Android View事件分发和消费源码简单理解 前言: 开发过程中觉得View事件这块是特别烧脑的,看了好久,才自认为看明白.中间上网查了下singwhatiwanna粉丝的读书笔记,有种茅塞顿开 ...

  9. Android Touch事件传递机制 二:单纯的(伪生命周期) 这个清楚一点

    转载于:http://blog.csdn.net/yuanzeyao/article/details/38025165 在前一篇文章中,我主要讲解了Android源码中的Touch事件的传递过程,现在 ...

最新文章

  1. 关于键盘上方创建返回按钮
  2. win32 debug api 原理
  3. 移动互联网时代: 妈,我回不去了
  4. win10安装oracle 11g最新亲身经历操作记录
  5. 来自长辈的5句教导!
  6. android 学习链接大集合
  7. 19个很有用的 JavaScript 库
  8. SpringCloud系列-Ribbon的基本应用
  9. iis7 您无权使用所提供的凭据查看此目录或页面。_使用 Spring Cloud 和 Docker 轻松构建微服务架构!...
  10. 基础数据类型转换过程中注意事项
  11. SSM excel文件的导入导出基于apache poi
  12. linux手机刷机包制作工具_【 蘑菇ROM助手 】蘑菇ROM助手(刷机包编辑工具)新版下载 - U大师...
  13. Linux虚拟机怎么越狱,iOS 7完美越狱教程:5分钟轻松搞定
  14. 大型IT项目策划和管理关键点
  15. 人工智能系列:AI 赋能平台
  16. Centos7 固定 ip
  17. xbox手柄电脑怎么测试软件,win10电脑怎么连接xbox手柄?win10电脑连接xbox手柄的详细步骤...
  18. 软件设计模式——建造者模式
  19. SQL调优指南笔记9:Joins
  20. U盘启动常见的几种格式

热门文章

  1. eclipse的优化操作
  2. mysql+nest+嵌套事务_MySQL——事务
  3. springboot怎么杀进程_全新Steam在线游戏 Among us太空狼人杀攻略
  4. 计算机二级办公软件高级应用难不难,计算机二级office难吗 考试内容是什么
  5. android surfaceview 技术,Android中SurfaceView的理解和使用
  6. linux如何得到本机地址,Linux下如何得到本机所有IP地址及MAC地址
  7. 机器学习笔记(九)——决策树的生成与剪枝
  8. 互联网晚报 | 8月26日 星期四 | 小米Q2营收净利均创单季历史新高;拼多多设立“百亿农研专项”;网易云音乐正式入驻闲鱼...
  9. 腾讯和阿里巴巴考虑互相开放生态,是真开放还是新的垄断?
  10. 钉钉微应用怎么进入_钉钉微应用如何打开本地app (Android)-问答-阿里云开发者社区-阿里云...