Android中键盘输入是用户输入交互的最常用最直接的手段,关于键盘输入,有几点可以提高用户使用体验。
第一:弹出键盘整体页面上移,使键盘不遮挡控件,需要在AndroidManifest设置对应Activity的windowSoftInputMode属性
stateVisible
设置为这个属性,可以将软键盘召唤出来,即使在界面上没有输入框的情况下也可以强制召唤出来
adjustResize
这个属性表示Activity的主窗口总是会被调整大小,从而保证软键盘显示空间。
效果如下图所示:
<activity android:name=".activity.LoginActivity" android:windowSoftInputMode="stateVisible|adjustResize" android:label="@string/title_activity_login" android:screenOrientation="portrait"></activity>第二:页面中有多个输入控件的时候,输入控件焦点的切换需要用户点击控件切换的话,使用体验不是很好,可以将键盘的回车键改成“下一步”按钮,直接将光标焦点切换到下一个输入控件。在布局文件中设置
android:imeOptions="actionNext" android:singleLine="true"即可
如下图所示
第三:提交表单时,可以点击提交按钮提交,也可以最后一个EditText获取焦点时设置键盘的回车键为发送键,这样点击了键盘的回车键就自动处理了提交表单的逻辑。
设置也很简单,输入控件布局文件添加两个属性如下:
android:imeOptions="actionSend" android:singleLine="true"在Activity中检测到键盘回车键是否按下,从而处理响应的逻辑
mPassWord.setOnKeyListener(new View.OnKeyListener() { @Override public boolean onKey(View v, int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_ENTER) { ((InputMethodManager) getSystemService(INPUT_METHOD_SERVICE)) .hideSoftInputFromWindow(LoginActivity.this.getCurrentFocus() .getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS); if(TextUtil.isEmpty(mPassWord.getText().toString())){ ToastUtil.getInstance().show("请输入密码"); }else{ login(mUserName.getText().toString(),mPassWord.getText().toString()); } } return false; } });如下图所示:
第四:将回车键改成搜索按键,布局文件EditText添加如下两个属性:
android:singleLine="true" android:imeOptions="actionSearch"回车键的点击检测和上边的一样
示例图如下: