您的位置:首页 > 移动开发 > Android开发

Android中EditText隐藏/自动弹出输入法的问题

2016-05-13 18:04 591 查看
有些时候我们的应用需要在EditText聚焦时自动弹出输入法,或者隐藏输入法,关于输入法弹出,一般不会有什么问题。但是,有一些情况输入法是没发自动弹出的,比如弹出的对话框里有edittext,介绍一些常用的用法。

一,配置AndroidManifest文件

通用做法,在有edittext的activity中,配置

android:windowSoftInputMode
,让输入法自动调节大小。

比如登录界面,有两个EditText和按钮,当用户点击输入用户名时,自动弹出输入法,将布局顶上去,adjustResize可以让输入法不遮住edittext输入框。

<activity
android:name="com.oair.oair_client.LoginActivity"
android:label="@string/title_activity_login"
android:launchMode="singleTask"
android:screenOrientation="portrait"
android:configChanges="keyboardHidden|orientation"
android:windowSoftInputMode="adjustResize"/>


三,设置activity启动的时候输入法默认不开启

activity启动的时候,editext不聚焦,输入法是不会弹出的,输入的时候点击就会弹出输入法。

也可以在onCreate方法中,设置:

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);


三,对话框有EditText,强制显示输入法

弹出的对话框里有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);
}


四,输入法相关方法

/**
* 显示键盘
* @param context
* @param view
*/
public static void showInputMethod(Context context, View view) {
InputMethodManager im = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);
im.showSoftInput(view, 0);
}
//隐藏虚拟键盘
public static void HideKeyboard(View v){
InputMethodManager imm = ( InputMethodManager) v.getContext( ).getSystemService(Context.INPUT_METHOD_SERVICE);
if (imm.isActive()) {
imm.hideSoftInputFromWindow( v.getApplicationWindowToken() , 0 );
}
}


总结

应用起来比较简单,不再赘述。也可以配置EditText,设置是否获得焦点,清除焦点:
edit.clearFocus();


EditText不弹出软件键盘:

edit.setInputType(InputType.TYPE_NULL);


activity默认弹出输入法:

android:windowSoftInputMode="stateVisible|adjustPan"


欢迎交流,杜乾,Dusan,Q 291902259。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: