解决android 软键盘在全屏下设置adjustResize无效的问题
来源:互联网 发布:淘宝卖家服务态度评分 编辑:程序博客网 时间:2024/05/15 18:55
全屏模式下,即使将activity的windowSoftInputMode的属性设置为:adjustResize,在键盘显示时它未将Activity的Screen向上推动,所以你Activity的view的根树的尺寸是没有变化的。在这种情况下,你也就无法得知键盘的尺寸,对根view的作相应的推移。全屏下的键盘无法Resize的问题从2.1就已经存在了,直到现在google还未给予解决。有人已经封装好了该类,你只需引用就OK了。使用方法在你的Activity的oncreate()方法里调用AndroidBug5497Workaround.assistActivity(this);即可。注意:在setContentView(R.layout.xxx)之后调用。
- public class AndroidBug5497Workaround {
- // For more information, see https://code.google.com/p/android/issues/detail?id=5497
- // To use this class, simply invoke assistActivity() on an Activity that already has its content view set.
- public static void assistActivity (Activity activity) {
- new AndroidBug5497Workaround(activity);
- }
- private View mChildOfContent;
- private int usableHeightPrevious;
- private FrameLayout.LayoutParams frameLayoutParams;
- private AndroidBug5497Workaround(Activity activity) {
- FrameLayout content = (FrameLayout) activity.findViewById(android.R.id.content);
- mChildOfContent = content.getChildAt(0);
- mChildOfContent.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
- public void onGlobalLayout() {
- possiblyResizeChildOfContent();
- }
- });
- frameLayoutParams = (FrameLayout.LayoutParams) mChildOfContent.getLayoutParams();
- }
- private void possiblyResizeChildOfContent() {
- int usableHeightNow = computeUsableHeight();
- if (usableHeightNow != usableHeightPrevious) {
- int usableHeightSansKeyboard = mChildOfContent.getRootView().getHeight();
- int heightDifference = usableHeightSansKeyboard - usableHeightNow;
- if (heightDifference > (usableHeightSansKeyboard/4)) {
- // keyboard probably just became visible
- frameLayoutParams.height = usableHeightSansKeyboard - heightDifference;
- } else {
- // keyboard probably just became hidden
- frameLayoutParams.height = usableHeightSansKeyboard;
- }
- mChildOfContent.requestLayout();
- usableHeightPrevious = usableHeightNow;
- }
- }
- private int computeUsableHeight() {
- Rect r = new Rect();
- mChildOfContent.getWindowVisibleDisplayFrame(r);
- if(r.top==0){
- r.top=statusBarH;//状态栏目的高度
- }
- return (r.bottom - r.top);
- }
- }
阅读全文
0 0
- 解决android 软键盘在全屏下设置adjustResize无效的问题
- 解决android 软键盘在全屏下设置adjustResize无效的问题
- android 软键盘在全屏下设置adjustResize无效的问题
- Android adjustresize全屏无效问题
- 解决安卓全屏“FLAG_FULLSCREEN”状态下“adjustResize”失效,全屏状态下WebView的输入框被软键盘挡住的问题
- 解决安卓全屏“FLAG_FULLSCREEN”状态下“adjustResize”失效,全屏状态下WebView的输入框被软键盘挡住的问题
- android 软键盘在全屏下的布局计算问题
- android 软键盘在全屏下的布局计算问题
- Android全屏和adjustResize的冲突解决
- android 软键盘挡住输入内容,adjustResize设置了也无效
- android设置全屏时,windowSoftInputMode设置无效,软键盘遮挡问题
- android设置全屏以及解决设置全屏无效的方法
- Android全屏下输入法软键盘遇到的问题
- Android 设置状态栏后adjustResize属性无效
- Android 设置状态栏后adjustResize属性无效
- android adjustresize not working when using windowTranslucentStatus,解决全屏效果与输入框属性冲突的问题
- 全屏时,adjustresize无效解决办法
- Android 全屏模式下,解决 软键盘遮挡
- STM32,IIC总线。
- 机器学习——DBN深度信念网络详解
- mysql
- C++递推算法求解兔子产仔问题
- 首次启动hadoop
- 解决android 软键盘在全屏下设置adjustResize无效的问题
- UML类图几种关系说明
- 蓝桥杯 ADV-227 算法提高 11-1实现strcmp函数
- Android 混淆问题记录can't find superclass or interface
- ListView的divider设置
- c#——switch case语句
- 脚本
- 蓝桥杯 ADV-226 算法提高 9-3摩尔斯电码
- 可重入函数和线程安全