1#

转自:http://liliang1222.iteye.com/blog/1130062

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



设置 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代码  [url=][/url]


    package com.test;  
      
    import com.test.main.TestAsyn;  
      
    import android.app.Activity;  
    import android.os.Bundle;  
    import android.view.KeyEvent;  
    import android.view.inputmethod.EditorInfo;  
    import android.widget.EditText;  
    import android.widget.TextView;  
    import android.widget.TextView.OnEditorActionListener;  
    import android.widget.Toast;  
      
    public class IMFActivity extends Activity implements OnEditorActionListener {  
          
        EditText etDefault;  
        EditText etEmail;  
        EditText etNumber;  
          
         /** Called when the activity is first created. */  
        @Override  
        public void onCreate(Bundle savedInstanceState) {  
            super.onCreate(savedInstanceState);  
            setContentView(R.layout.imf_layout);  
              
            etDefault = (EditText)findViewById(R.id.default_content);  
            etEmail = (EditText)findViewById(R.id.email_content);  
            etNumber = (EditText)findViewById(R.id.number_content);  
            etDefault.setOnEditorActionListener(this);  
            etEmail.setOnEditorActionListener(this);  
            etNumber.setOnEditorActionListener(this);  
              
        }  
      
        @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;  
            }  
            //Toast.makeText(this, v.getText()+"--" + actionId, Toast.LENGTH_LONG).show();  
            return true;  
        }  
    }  



xml文件:


Xml代码  [url=][/url]


    <?xml version="1.0" encoding="utf-8"?>  
    <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"  
        android:layout_width="fill_parent" android:layout_height="fill_parent">  
      
        <TableLayout android:layout_width="fill_parent"  
            android:layout_height="fill_parent">  
            <TableRow>  
                <TextView android:text="No special rules" android:id="@+id/TextView01"  
                    android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView>  
                <EditText android:text="1111111111111" android:id="@+id/default_content"  
                    android:layout_width="fill_parent" android:layout_height="wrap_content"></EditText>  
            </TableRow>  
            <TableRow>  
                <TextView android:text="Email address:" android:id="@+id/TextView01"  
                    android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView>  
                <EditText android:text="" android:id="@+id/email_content"  
                    android:layout_width="fill_parent" android:layout_height="wrap_content"  
                    android:inputType="text|textEmailAddress"  
                    android:imeOptions="actionSend"></EditText>  
            </TableRow>  
            <TableRow>  
                <TextView android:text="Signed decimal number:" android:id="@+id/TextView01"  
                    android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView>  
                <EditText android:text="" android:id="@+id/number_content"  
                    android:layout_width="fill_parent" android:layout_height="wrap_content"  
                    android:inputType="number|numberSigned|numberDecimal"  
                    android:imeOptions="actionDone"></EditText>  
            </TableRow>  
        </TableLayout>  
    </ScrollView>