Android中EditText隐藏/自动弹出输入法的问题
2016-05-13 18:04
591 查看
有些时候我们的应用需要在EditText聚焦时自动弹出输入法,或者隐藏输入法,关于输入法弹出,一般不会有什么问题。但是,有一些情况输入法是没发自动弹出的,比如弹出的对话框里有edittext,介绍一些常用的用法。
比如登录界面,有两个EditText和按钮,当用户点击输入用户名时,自动弹出输入法,将布局顶上去,adjustResize可以让输入法不遮住edittext输入框。
也可以在onCreate方法中,设置:
EditText不弹出软件键盘:
activity默认弹出输入法:
欢迎交流,杜乾,Dusan,Q 291902259。
一,配置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。
相关文章推荐
- Android的udp回显测试源码
- Android 自定义注解框架
- Android SDK 国内镜像
- android测试框架对比(二)
- android BroadCast的发送与接收
- Android中intent传递list或者对象的方法
- Android Studio NDK 开发配置
- android 使用fastjson解析
- 玩转Android studio 插件开发、测试、JCenter库发布(1)
- 对于Picasso的封装和优化方案
- Android自动化测试框架目标
- 对Android中Touch事件分发机制的理解和总结
- Android Studio 打包、生成jks密钥、签名Apk、多渠道打包
- 如何调用Android隐藏API
- 使用Android studio Gradle 实现友盟多渠道打包
- Android Logcat输出为何能自动换行输出的原因以及多\n的作用
- android国际化(多语言)
- android中的Timer与Handler的比较
- Android Service中开启Activity和Alertdialog
- android国际化(多语言)