android的软键盘一般在编辑框EditText获取焦点时弹出,如我们选取时或者当Activity跳转时默认获取焦点时都会弹出。对于界面跳转弹出的处理可以在AndroidManifest.xml文件中的<activity </activity>中添加属性:android:windowSoftInputMode = "xx";
<activity
android:name=".MainActivity"
android:windowSoftInputMode="xx" >
</activity>
其中的值以及效果如下:
stateUnspecified:没有指定具体状态,系统将选择根据主题设置选择一个合适的状态。
stateUnchanged:本activity出现时同步上一个activity的软键盘状态。
stateHidden: 进入本activity中软键盘总是被隐藏,只有重新获取焦点时才显示。
stateAlwaysHidden:当该activity主窗口获取焦点时,软键盘也总是被隐藏的。
stateVisible:进入activity时软键盘可见,只有取消时才隐藏。
stateAlwaysVisible:本activity中软键盘总是显示的状态。
adjustUnspecified:默认设置,通常由系统自行决定是隐藏还是显示。
adjustResize:该activity总是调整屏幕的大小以便留出软键盘的空间。
adjustPan:当选取编辑框EditText时窗口内容可以滑动,使处于界面下面的内容不会被软键盘遮挡。
javaCode中操作软键盘的显示和隐藏:
其中view可为activity中的任一即可。
//隐藏软键盘
public static void hideSoftInput(Context context, View view) {
InputMethodManager imm = (InputMethodManager) context
.getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
}
// 显示软键盘
public static void showSoftInput(Context context, View view) {
InputMethodManager imm = (InputMethodManager) context
.getSystemService(Context.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS);
}
在EditText获取焦点并且弹出软键盘时也可以对其中的 确认按钮做操作,即可自定义显示的为”完成”还是“下一个”。
javaCode中:
mEditText.setImeOptions(EditorInfo.IME_ACTION_DONE);
XML中(EditText):
android:imeOptions="actionDone"
其中值对应如下:
actionUnspecified 未指定,对应常量EditorInfo.IME_ACTION_UNSPECIFIED :显示回车键,根据具体情况显示。
actionNone 没有动作,对应常量EditorInfo.IME_ACTION_NONE :显示回车键,不做操作
actionGo 去往,对应常量EditorInfo.IME_ACTION_GO :显示“去往”。
actionSearch 搜索,对应常量EditorInfo.IME_ACTION_SEARCH : 显示放大镜图标。
actionSend 发送,对应常量EditorInfo.IME_ACTION_SEND :显示“发送”。
actionNext 下一个,对应常量EditorInfo.IME_ACTION_NEXT :显示“下一个”。
actionDone 完成,对应常量EditorInfo.IME_ACTION_DONE :显示“完成”。
对软键盘的按钮操作:
mEditText.setOnEditorActionListener(new OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId,
KeyEvent event) {
if (actionId == EditorInfo.IME_ACTION_DONE) {
//具体操作
}
return false;
}
});