Android 软键盘自动弹出和关闭
2016-05-10 16:24
507 查看
在我们写修改信息或者搜索,修改密码等界面的时候,用户进入这个界面的主要目的就是输入修改/查找 某些信息,为了用户体验应该自动弹出软键盘而不是让用户主动点击输入框才弹出。
对于界面比较复杂的情况的时候,软键盘可能无法正常的弹出,需要延迟加载。即在界面加载完成之后,弹出软键盘
1.1 使用 定时器 schedule
1.2 使用 handler
主要就是 windowSoftInputMode 这个属性,其中2个比较重要的是 adjustPan 和 adjustResize
adjustPan 不会把底部的布局给挤上去,例如relateLayout 布局中 放到bottom 的布局
adjustResize 是自适应的,会把底部的挤上去。
更详细的可以了解下 windowSoftInputMode 这个属性,好多大神的博客上都有说明,我这就不赘述了。
1.软键盘的自动弹出
private void showKeyboard(){ InputMethodManager inputMethodManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); inputMethodManager.showSoftInput(editText, 0); }
对于界面比较复杂的情况的时候,软键盘可能无法正常的弹出,需要延迟加载。即在界面加载完成之后,弹出软键盘
1.1 使用 定时器 schedule
Timer timer = new Timer(); timer.schedule(new TimerTask() { public void run() { InputMethodManager inputManager = (InputMethodManager)editText.getContext().getSystemService(Context.INPUT_METHOD_SERVICE); inputManager.showSoftInput(editText, 0); } }, 998);
1.2 使用 handler
2.软键盘的关闭
我遇到过一种情况是,首页是scrollView 包裹的界面,滚动一段距离后进入下一个页面,会弹出软键盘,当关闭该界面的时候(即直接 finish()),回到首页的时候,scrollView 不是原来的位置了。处理办法就是 在有软键盘弹出的页面,先关闭软键盘,再 finish()界面。private void closeKeyboard() { View view = getWindow().peekDecorView(); if (view != null) { InputMethodManager inputMethodManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); inputMethodManager.hideSoftInputFromWindow(view.getWindowToken(), 0); } }
3.软键盘把某些布局挤上去了的情况
<activity android:name=".activity.DetailActivity" android:screenOrientation="portrait" android:windowSoftInputMode="adjustPan" android:theme="@style/AppTheme.NoActionBar.Translucent"/>
主要就是 windowSoftInputMode 这个属性,其中2个比较重要的是 adjustPan 和 adjustResize
adjustPan 不会把底部的布局给挤上去,例如relateLayout 布局中 放到bottom 的布局
adjustResize 是自适应的,会把底部的挤上去。
更详细的可以了解下 windowSoftInputMode 这个属性,好多大神的博客上都有说明,我这就不赘述了。
相关文章推荐
- Android手机启动流程探究
- 史上最详细的Android Studio系列教程三--快捷键
- Android资源目录---assets与res/raw区别
- Adb connection Error:远程主机强迫关闭了一个现有的连接 处理
- Android Studio系列教程五--Gradle命令详解与导入第三方包
- Android通用流行框架大全
- 史上最详细的Android Studio系列教程四--Gradle基础
- 解决Activity启动黑屏及设置android:windowIsTranslucent不兼容activity切换动画问题
- Android-Coverflow 效果
- Android通过指令模拟touch滑动解锁
- android studio中如何修改包名
- 定制自己的线程池管理类、防止OOM
- android studio 错误集合
- Android Twitter第三方登录&获取用户信息
- AndroidStudio+Genymotion
- android应用安装成功之后删除apk文件
- Android应用界面开发(一)
- Android 自定义view --圆形百分比(进度条)
- android之从第三方启动自己的apk
- Android之Glide获取图片Path和Glide获取图片Bitmap