默认情况下软键盘右下角的按钮为“下一个”,点击会到下一个输入框,保持软键盘
设置 android:imeOptions="actionDone" ,软键盘下方变成“完成”,点击后光标保持在原来的输入框上,并且软键盘关闭
在 这里设置的imeOptions如何使用呢?如下面的代码,让EditText实现setOnEditorActionListener,在 onEditAction方法中actionId就对应我们设置的imeOptions。系统默认的actionId 有:EditorInfo.IME_NULL、EditorInfo.IME_ACTION_SEND、 EditorInfo.IME_ACTION_DONE等。这样我们就可以根据不同的EditText来实现不同的软键盘右下角功能键。
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>