android:imeOptions屬性介紹

默認情況下軟鍵盤右下角的按鈕爲“下一個”,點擊會到下一個輸入框,保持軟鍵盤

這裏寫圖片描述

設置爲 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來實現不同的軟鍵盤右下角功能鍵。

// MainActivity.java

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 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>  
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章