实战情景需求: 需要在EditText聚焦时自动弹出输入法,或者隐藏输入法。
内容描述:
- 1.输入法弹出,一般没什么问题。但是有没发自动弹出的情况如:弹出的对话框Dialog里有edittext。
解决方法:
一、配置AndroidManifest文件
在有edittext的activity中,配置android:windowSoftInputMode,输入法自动调节大小。
如登录界面,有两个EditText和按钮,当用户点击输入用户名时,自动弹出输入法,将布局顶上去,adjustResize可以让输入法不遮住edittext输入框。
<activity
android:name=".activity.SoundRecorder"
android:clearTaskOnLaunch="false"
android:configChanges="orientation|screenSize|keyboardHidden"
android:launchMode="singleTask"
android:windowSoftInputMode="adjustResize"
android:screenOrientation="portrait">
二、设置activity启动的时候输入法默认不开启
- 如果设置成:android:windowSoftInputMode=”stateVisible|adjustPan” ,那么启动后就马上显示输入法。
- activity启动的时候,editext不聚焦,输入法是不会弹出的,输入的时候点击就会弹出输入法。
为了不一启动就打开,可以在onCreate方法中,设置:
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
三、对话框有EditText,强制显示输入法
弹出的对话框dialog里有edittext,show方法与输入法的现实可能会冲突,没发自动弹出可如下操作:
//显示对话框之后,用handler延时显示输入法,不延时将一闪而过。
dialog_rename.show();
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
showInputMethod();
}
},100);
}
private void showInputMethod() {
//自动弹出键盘
InputMethodManager inputManager=(InputMethodManager)context.getSystemService(Context.INPUT_METHOD_SERVICE);
inputManager.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS);
//强制隐藏Android输入法窗口
// inputManager.hideSoftInputFromWindow(edit.getWindowToken(),0);
}
四,其他相关方法
import android.content.Context;
import android.view.inputmethod.InputMethodManager;
import android.widget.EditText;
//打开或关闭软键盘
public class KeyBoardUtils
{
/**
* 打卡软键盘
*
* @param mEditText输入框
* @param mContext上下文
*/
public static void openKeybord(EditText mEditText, Context mContext) {
InputMethodManager imm = (InputMethodManager) mContext
.getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(mEditText, InputMethodManager.RESULT_SHOWN);
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED,
InputMethodManager.HIDE_IMPLICIT_ONLY);
}
/**
* 关闭软键盘
*
* @param mEditText输入框
* @param mContext上下文
*/
public static void closeKeybord(EditText mEditText, Context mContext) {
InputMethodManager imm = (InputMethodManager) mContext.
getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(mEditText.getWindowToken(), 0);
}
}
总结
过程比较简单。也可以配置EditText,设置是否获得焦点,清除焦点:edit.clearFocus();
EditText禁止、不弹出软件键盘:
edit.setInputType(InputType.TYPE_NULL);。activity一启动默认弹出输入法:
android:windowSoftInputMode=”stateVisible|adjustPan”