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

”Dialog中包含EditText“时,控制输入法的”隐藏/自动弹出“操作

2016-10-15 14:56 2236 查看
实战情景需求: 需要在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”
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息