文档章节

android 5.0 顶部bar问题

丁佳辉
 丁佳辉
发布于 2016/05/20 15:13
字数 170
阅读 20
收藏 0
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,int statusBarHeight) {
        new AndroidBug5497Workaround(activity,statusBarHeight);
    }

    private View mChildOfContent;
    private int usableHeightPrevious;
    private FrameLayout.LayoutParams frameLayoutParams;
    private int statusBarHeight;

    private AndroidBug5497Workaround(Activity activity,int statusBarHeight) {
        FrameLayout content = (FrameLayout) activity.findViewById(android.R.id.content);
        mChildOfContent = content.getChildAt(0);
        mChildOfContent.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
            public void onGlobalLayout() {
                possiblyResizeChildOfContent();
            }
        });
        this.statusBarHeight = statusBarHeight;
        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 + statusBarHeight;
            } else {
                // keyboard probably just became hidden
                frameLayoutParams.height = usableHeightSansKeyboard;
            }
            mChildOfContent.requestLayout();
            usableHeightPrevious = usableHeightNow;
        }
    }

    private int computeUsableHeight() {
        Rect r = new Rect();
        mChildOfContent.getWindowVisibleDisplayFrame(r);
        return (r.bottom - r.top);
    }
}

 

 

oncreate里

public int getStatusBarHeight() {
   int result = 0;
   int resourceId = getResources().getIdentifier("status_bar_height", "dimen", "android");
   if (resourceId > 0) {
      result = getResources().getDimensionPixelSize(resourceId);
   }
   return result;
}

 

 

AndroidBug5497Workaround.assistActivity(this, getStatusBarHeight());

© 著作权归作者所有

共有 人打赏支持
丁佳辉
粉丝 19
博文 412
码字总数 197400
作品 0
浦东
程序员
私信 提问
手机APP UI设计尺寸基础知识

现象 像素密度 倍率与逻辑像素 单位 Web怎么办 实际应用 iPhone Android Web 总结 原文 http://www.shejidaren.com/mobile-ui-chi-cun.html 对于刚入行的UI设计师,往往会遇到一个基础问题,...

火云
2015/11/02
0
0
React Navigation

https://reactnavigation.org/docs/intro/nesting 官网 http://blog.csdn.net/u013718120/article/details/72357698 http://www.jianshu.com/p/2f575cc35780 这里只是基本用法,高级详情用法......

Chason-洪
2017/11/15
0
0
说说 Android 的 Material Design 设计(五)——可折叠式标题栏

1 CollapsingToolbarLayout 布局 CollapsingToolbarLayout 是基于 Toolbar 的布局。它可以让 Toolbar 的效果变得更加华丽。 注意:CollapsingToolbarLayout 只能作为 AppBarLayout 的直接子布...

deniro
10/20
0
0
高仿美团app,浮动layout滑动到顶部悬停效果

做了个类似美团app的一个效果 当一个浮动layout的滑动到顶部时,这个浮动layout就悬停下来,当屏幕往下滑动时,浮动layout也跟着往下移动。 因此,我特意也写了一个:浮动layuot滑动到顶部悬...

谁带我去看看世界
2015/06/16
0
4
Google I/O 2014大会很有可能发布的10大惊喜

oogle I/O 2014在下周即将到来,Android 5.0,Android穿戴设备、Goolge眼镜上市时间、Nest、Silver 项目、Project Ara模块化手机、Android车载系统、 Nexus 8、Google Fiber......无疑都是大...

冬四拉
2014/06/19
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Accept和Content-type的意思

Accept意思是我希望接收到的数据类型 Content-type意思是我发出去的数据类型

大灰狼wow
21分钟前
1
0
Java每天10道面试题,跟我走,offer有!(五)

41.Iterator、ListIterator 和 Enumeration的区别?   迭代器是一种设计模式, 它是一个对象, 它可以遍历并选择序列中的对象, 而开发人员不需要了解 该序列的底层结构。 迭代器通常被称为...

Java干货分享
22分钟前
2
0
meta 解决页面浏览器兼容性

使用最高级的ie内核,如果支持谷歌内核,使用谷歌内核 <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" /> 这 样写可以达到的效果是如果安装了GCF,则使用GCF来渲染页面,如...

之渊
24分钟前
2
0
极验验证demo(django+vue)

在使用之前,曾经试过用阿里云的人机验证,不过在签名部分比较复杂,下载sdk后需要自己写很多,折腾了一下,还是放弃。而腾讯云的人机验证python版本有demo,直接填写keyhe1secret就可以使用...

xiaoge2016
25分钟前
1
0
浅谈js回调

js回调极为简洁,无需声明,直接通过参数传入方法实体,调用方法实体的时候,可以直接调用方法名或者方法名加参数即可,以下看例子 socket.initWebSocket(this, userName, userId, (isSucce...

Carbenson
30分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部