”Dialog中包含EditText“时,控制输入法的”隐藏/自动弹出“操作
2016-10-15 14:56
2236 查看
实战情景需求: 需要在EditText聚焦时自动弹出输入法,或者隐藏输入法。
内容描述:
1.输入法弹出,一般没什么问题。但是有没发自动弹出的情况如:弹出的对话框Dialog里有edittext。
解决方法:
一、配置AndroidManifest文件
在有edittext的activity中,配置android:windowSoftInputMode,输入法自动调节大小。
如登录界面,有两个EditText和按钮,当用户点击输入用户名时,自动弹出输入法,将布局顶上去,adjustResize可以让输入法不遮住edittext输入框。
二、设置activity启动的时候输入法默认不开启
如果设置成:android:windowSoftInputMode=”stateVisible|adjustPan” ,那么启动后就马上显示输入法。
activity启动的时候,editext不聚焦,输入法是不会弹出的,输入的时候点击就会弹出输入法。
为了不一启动就打开,可以在onCreate方法中,设置:
三、对话框有EditText,强制显示输入法
弹出的对话框dialog里有edittext,show方法与输入法的现实可能会冲突,没发自动弹出可如下操作:
四,其他相关方法
总结
过程比较简单。也可以配置EditText,设置是否获得焦点,清除焦点:edit.clearFocus();
EditText禁止、不弹出软件键盘:
edit.setInputType(InputType.TYPE_NULL);。
activity一启动默认弹出输入法:
android:windowSoftInputMode=”stateVisible|adjustPan”
内容描述:
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”
相关文章推荐
- android开发之 包含EditText组件 禁止自动获取焦点弹出输入法
- 问题系列:解决Dialog全屏显示以及Dialog显示自动弹出输入法(转)
- Android 让EditText失去焦点避免自动弹出输入法
- Android中EditText隐藏/自动弹出输入法的问题
- 取消 EditText 自动聚焦弹出输入法界面
- Android中DialogFragment自动弹出输入法
- Android的EditText无法自动弹出输入法问题 .
- Activity启动后EditText是否自动弹出输入法虚拟键盘(软键盘)的问题
- 包含EditText组件的界面中,禁止自动弹出软键盘
- Activity 启动后 EditText 是否自动弹出输入法虚拟键盘的问题
- 解决EditText导致输入法自动弹出的几种方案
- edittext禁止首次启动自动弹出输入法
- 【ANDROID布局问题总结】Activity启动后EditText是否自动弹出输入法虚拟键盘的问题
- Activity启动后EditText是否自动弹出输入法虚拟键盘(软键盘)的问题
- AlertDialog中的EditText自动弹出输入法
- Android 自定义布局dialog使用(解决edittext无法弹出输入法的问题)
- 设置进入存在EditText的界面时,输入法不会自动弹出
- android中AlertDialog包含EditText时弹出键盘(dia和软键盘同时弹出)
- Android 让EditText失去焦点避免自动弹出输入法
- 安卓系统标题栏、菜单栏的隐藏、隐藏edit输入框会自动弹出输入法