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

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. }  
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代碼 複製代碼 收藏代碼
  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>  
 
  • 大小: 48.5 KB
  • 大小: 51.5 KB
  • 大小: 48.2 KB
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章