我试图找出如何告诉状态栏的位置(顶部或底部).我试图检查HierarchyViewer但没有看到状态栏视图.
实际上,我需要弄清楚的是,给定一个上下文,一种返回布尔值的方法(如果条形图在顶部则为true,如果不在条形图则为false) – 就像它不在大多数平板电脑上一样.我写了一个简单的解决方案,试图找出状态栏位于顶部或底部,但它似乎没有帮助:
private boolean isStatusBarAtTop(){ if (!(getContext() instanceof Activity)) { return !getContext().getResources().getBoolean(R.bool.isTablet); } Window window = ((Activity) getContext()).getWindow(); if(window == null) { return !getContext().getResources().getBoolean(R.bool.isTablet); } Activity activity = (Activity)getContext(); Rect rect = new Rect(); window.getDecorView().getWindowVisibleDisplayFrame(rect); View ourView = window.findViewById(Window.ID_ANDROID_CONTENT); Log.d("Menu","Window Top: "+ ourView.getTop() + ","+ourView.getBottom()+ ","+ourView.getLeft()+","+ourView.getRight()); Log.d("Menu","Decor View Dimensions"+rect.flattenToString()); return ourView.getTop() != 0; }
由于某种原因,我得到以下输出(在Nexus 7平板电脑上运行):
D/Menu(1007): Window Top: 0,0 D/Menu(1007): Decor View Dimensions0 0 800 1216
我在想什么/做错了什么?
解决方法
这是唯一对我有用的方法.以下方法返回顶部状态栏的高度.因此,如果相应的返回值等于0,则窗口顶部没有状态栏.
public static int getTopStatusBarHeight(Activity activity) { Rect rect = new Rect(); activity.getWindow().getDecorView().getWindowVisibleDisplayFrame(rect); return rect.top; }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。