安卓 输入法显示/隐藏/布局随输入法显示变化/窗口随输入法显示变化
显示输入法
隐藏输入法
//关闭输入法
View view= getCurrentFocus();
if(view!=null){
IBinder iBinder= view.getWindowToken();
if(iBinder!=null)
((InputMethodManager) getSystemService(INPUT_METHOD_SERVICE)).hideSoftInputFromWindow(iBinder, InputMethodManager.HIDE_NOT_ALWAYS);
}
在启动activity时默认显示输入法
android:windowSoftInputMode="adjustPan|stateVisible"
在启动activity时默认隐藏输入法
getWindow().setSoftInputMode(
WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
在XML的其它控件上设置了
android:focusable="true"
android:focusableInTouchMode="true"
在AndroidManifest.xml中加入
android:windowSoftInputMode="adjustPan|stateHidden"
windowSoftInputMode各值的含义:
【1】stateUnspecified:软键盘的状态并没有指定,系统将选择一个合适的状态或依赖于主题的设置
【2】stateUnchanged:当这个activity出现时,软键盘将一直保持在上一个activity里的状态,无论是隐藏还是显示
【3】stateHidden:用户选择activity时,软键盘总是被隐藏
【4】stateAlwaysHidden:当该Activity主窗口获取焦点时,软键盘也总是被隐藏的
【5】stateVisible:软键盘通常是可见的
【6】stateAlwaysVisible:用户选择activity时,软键盘总是显示的状态
【7】adjustUnspecified:默认设置,通常由系统自行决定是隐藏还是显示
【8】adjustResize:该Activity总是调整屏幕的大小以便留出软键盘的空间
【9】adjustPan:当前窗口的内容将自动移动以便当前焦点从不被键盘覆盖和用户能总是看到输入内容的部分
布局随输入法变化
android:windowSoftInputMode="adjustResize"
窗口随输入法变化
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
用代码隐藏/显示输入法(未必有效)
//隐藏虚拟键盘
public static void HideKeyboard(View v)
{
InputMethodManager imm = ( InputMethodManager ) v.getContext( ).getSystemService( Context.INPUT_METHOD_SERVICE );
if ( imm.isActive( ) ) {
imm.hideSoftInputFromWindow( v.getApplicationWindowToken( ) , 0 );
}
}
//显示虚拟键盘
public static void ShowKeyboard(View v)
{
InputMethodManager imm = ( InputMethodManager ) v.getContext( ).getSystemService( Context.INPUT_METHOD_SERVICE );
imm.showSoftInput(v,InputMethodManager.SHOW_FORCED);
}