zoukankan      html  css  js  c++  java
  • android 回车键事件编程

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

     



     

     

    设置 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.   
    3. import com.test.main.TestAsyn;  
    4.   
    5. import android.app.Activity;  
    6. import android.os.Bundle;  
    7. import android.view.KeyEvent;  
    8. import android.view.inputmethod.EditorInfo;  
    9. import android.widget.EditText;  
    10. import android.widget.TextView;  
    11. import android.widget.TextView.OnEditorActionListener;  
    12. import android.widget.Toast;  
    13.   
    14. public class IMFActivity extends Activity implements OnEditorActionListener {  
    15.       
    16.     EditText etDefault;  
    17.     EditText etEmail;  
    18.     EditText etNumber;  
    19.       
    20.      /** Called when the activity is first created. */  
    21.     @Override  
    22.     public void onCreate(Bundle savedInstanceState) {  
    23.         super.onCreate(savedInstanceState);  
    24.         setContentView(R.layout.imf_layout);  
    25.           
    26.         etDefault = (EditText)findViewById(R.id.default_content);  
    27.         etEmail = (EditText)findViewById(R.id.email_content);  
    28.         etNumber = (EditText)findViewById(R.id.number_content);  
    29.         etDefault.setOnEditorActionListener(this);  
    30.         etEmail.setOnEditorActionListener(this);  
    31.         etNumber.setOnEditorActionListener(this);  
    32.           
    33.     }  
    34.   
    35.     @Override  
    36.     public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {  
    37.         switch(actionId){  
    38.         case EditorInfo.IME_NULL:  
    39.             System.out.println("null for default_content: " + v.getText() );  
    40.             break;  
    41.         case EditorInfo.IME_ACTION_SEND:  
    42.             System.out.println("action send for email_content: "  + v.getText());  
    43.             break;  
    44.         case EditorInfo.IME_ACTION_DONE:  
    45.             System.out.println("action done for number_content: "  + v.getText());  
    46.             break;  
    47.         }  
    48.         //Toast.makeText(this, v.getText()+"--" + actionId, Toast.LENGTH_LONG).show();  
    49.         return true;  
    50.     }  
    51. }  

     

     

     

    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.   
    5.     <TableLayout android:layout_width="fill_parent"  
    6.         android:layout_height="fill_parent">  
    7.         <TableRow>  
    8.             <TextView android:text="No special rules" android:id="@+id/TextView01"  
    9.                 android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView>  
    10.             <EditText android:text="1111111111111" android:id="@+id/default_content"  
    11.                 android:layout_width="fill_parent" android:layout_height="wrap_content"></EditText>  
    12.         </TableRow>  
    13.         <TableRow>  
    14.             <TextView android:text="Email address:" android:id="@+id/TextView01"  
    15.                 android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView>  
    16.             <EditText android:text="" android:id="@+id/email_content"  
    17.                 android:layout_width="fill_parent" android:layout_height="wrap_content"  
    18.                 android:inputType="text|textEmailAddress"  
    19.                 android:imeOptions="actionSend"></EditText>  
    20.         </TableRow>  
    21.         <TableRow>  
    22.             <TextView android:text="Signed decimal number:" android:id="@+id/TextView01"  
    23.                 android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView>  
    24.             <EditText android:text="" android:id="@+id/number_content"  
    25.                 android:layout_width="fill_parent" android:layout_height="wrap_content"  
    26.                 android:inputType="number|numberSigned|numberDecimal"  
    27.                 android:imeOptions="actionDone"></EditText>  
    28.         </TableRow>  
    29.     </TableLayout>  
    30. </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;
    }
    });

  • 相关阅读:
    【BZOJ 2820】 YY的GCD (莫比乌斯+分块)
    【BZOJ 2005】[Noi2010]能量采集 (容斥原理| 欧拉筛+ 分块)
    【HDU 4898】 The Revenge of the Princess’ Knight (后缀数组+二分+贪心+...)
    【BZOJ 3473】 字符串 (后缀数组+RMQ+二分 | 广义SAM)
    【BZOJ3439】 Kpm的MC密码 (TRIE+主席树)
    【GDOI2014 DAY2】Beyond (扩展KMP)
    【转】【最大子矩阵问题】【悬线法】 学习笔记
    【HDU4333】Revolving Digits(扩展KMP+KMP)
    【转】各种字符串算法大总结
    【poj2478-Farey Sequence】递推求欧拉函数-欧拉函数的几个性质和推论
  • 原文地址:https://www.cnblogs.com/bigben0123/p/4191157.html
Copyright © 2011-2022 走看看