android软键盘回车键的点击事件处理

原文地址:http://blog.csdn.net/liuxiit/article/details/6903884

实现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键被按下,就可以编写自己事件响应功能了。

具体代码:

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

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

PS:

把EditText的Ime Options属性设置成不同的值,Enter键上可以显示不同的文字或图案
actionNone : 回车键,按下后光标到下一行
actionGo : Go,
actionSearch : 一个放大镜
actionSend : Send
actionNext : Next

actionDone : Done,隐藏软键盘,即使不是最后一个文本输入框



================================================

SDK升级到1.5以后,当文本输入框(EditText及其子类)获得焦点后,会弹出系统自带的软键盘
为了实现一些自定义的功能,就稍微研究了下
* 当layout中有多个EditText,把每个控件的android:singleLine的属性都被设置成true的情况下,软键盘的Enter键上 的文字会变成“Next”,按下后下个EditText会自动获得焦点(实现了“Next”的功能);当最后一个控件获得焦点的时候,Enter键上的文 字会变成“Done”,按下后软键盘会自动隐藏起来
* 把EditText的Ime Options属性设置成不同的值,Enter键上可以显示不同的文字或图案
actionNone : 回车键,按下后光标到下一行
actionGo : Go,
actionSearch : 一个放大镜
actionSend : Send
actionNext : Next
actionDone : Done,隐藏软键盘,即使不是最后一个文本输入框

示例:

<EditText android:text="" 
            android:layout_width="fill_parent" 
            android:layout_height="wrap_content"
            android:inputType="text"
            android:id="@+id/edit1"/>
    <EditText android:layout_width="fill_parent"
           android:layout_height="wrap_content"
           android:id="@+id/edit2"
           android:imeOptions="actionSend" //发送
           android:inputType="text|textEmailAddress"/>
     <EditText android:layout_width="fill_parent"
           android:layout_height="wrap_content"
           android:id="@+id/edit3"
           android:imeOptions="actionDone"  //确定
           android:inputType="number|numberSigned|numberDecimal"/>

//--------------------------------------------------------------------------------------------------

  edit1.setOnEditorActionListener(onEditorActionListener);
  edit2.setOnEditorActionListener(onEditorActionListener);
  edit3.setOnEditorActionListener(onEditorActionListener);

private OnEditorActionListener onEditorActionListener = new OnEditorActionListener() {
    
    @Override
    public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
        switch(actionId){  
        case EditorInfo.IME_NULL:  
            System.out.println("null for default_content: " + v.getText() );  
            break;  
        case EditorInfo.IME_ACTION_SEND:  
            System.out.println("action send for email_content: "  + v.getText());  
            break;  
        case EditorInfo.IME_ACTION_DONE:  
            System.out.println("action done for number_content: "  + v.getText());  
            break;  
        }  
        return true;
    }
  };

 

 

此效果自定义的一个键盘输入,见附件工程。
 

 


  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值