Android关于软键盘的若干

来源:互联网 发布:网络空间安全协会网址 编辑:程序博客网 时间:2024/05/11 05:30

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() {@Overridepublic boolean onEditorAction(TextView v, int actionId,KeyEvent event) {if (actionId == EditorInfo.IME_ACTION_DONE) {//具体操作}return false;}});





0 0
原创粉丝点击