android中怎么计算标题栏高度

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android中怎么计算标题栏高度相关的知识,希望对你有一定的参考价值。

1、获取标题栏高度:

getWindow().findViewById(Window.ID_android_CONTENT)这个方法获取到的view就是程序不包括标题栏的部分,然后就可以知道标题栏的高度了。

int contentTop = getWindow().findViewById(Window.ID_ANDROID_CONTENT).getTop();
//statusBarHeight是上面所求的状态栏的高度
int titleBarHeight = contentTop - statusBarHeight

扩展:

1、获取状态栏高度:

decorView是window中的最顶层view,可以从window中获取到decorView,然后decorView有个getWindowVisibleDisplayFrame方法可以获取到程序显示的区域,包括标题栏,但不包括状态栏。于是,我们就可以算出状态栏的高度了。

Rect frame = new Rect();
getWindow().getDecorView().getWindowVisibleDisplayFrame(frame);
int statusBarHeight = frame.top;

2、获取屏幕高度

方法1:
WindowManager windowManager = getWindowManager();
Display display = windowManager.getDefaultDisplay();
screenWidth = display.getWidth();
screenHeight = display.getHeight();方法2:
DisplayMetrics dm = new DisplayMetrics();
this.getWindowManager().getDefaultDisplay().getMetrics(dm);//this指当前activity
screenWidth =dm.widthPixels;
screenHeight =dm.heightPixels;
参考技术A getWindow().getDecorView().getWindowVisibleDisplayFrame(rect);///取得整个视图部分,注意,如果你要设置标题样式,这个必须出现在标题样式之后,否则会出错
int top = rect.top;////状态栏的高度,所以rect.height,rect.width分别是系统的高度的宽度
View v = getWindow().findViewById(Window.ID_ANDROID_CONTENT);///获得根视图
int top2 = v.getTop();///状态栏标题栏的总高度,所以标题栏的高度为top2-top
int width = v.getWidth();///视图的宽度,这个宽度好像总是最大的那个
int height = v.getHeight();////视图的高度,不包括状态栏和标题栏
如果只想取得屏幕大小,可以用
Display display = getWindowManager().getDefaultDisplay() ;
display.getWidth();
display.getHeight();代码见@Overridepublic void onWindowFocusChanged(boolean hasFocus)
// TODO Auto-generated method stub
super.onWindowFocusChanged(hasFocus);
Rect frame = new Rect();
getWindow().getDecorView().getWindowVisibleDisplayFrame(frame);
// 状态栏高度
int statusBarHeight = frame.top;
View v = getWindow().findViewById(Window.ID_ANDROID_CONTENT);
int contentTop = v.getTop();
// statusBarHeight是上面所求的状态栏的高度
int titleBarHeight = contentTop - statusBarHeight;
textView = (TextView) findViewById(R.id.textView1);
textView.setText(标题栏的高度 + Integer.toString(titleBarHeight) +

+ 标题栏高度 + statusBarHeight +
+ 视图的宽度 + v.getWidth()
+
+ 视图的高度(不包含状态栏和标题栏) + v.getHeight());本回答被提问者和网友采纳

获取没有标签栏的 UIView 高度

【中文标题】获取没有标签栏的 UIView 高度【英文标题】:get UIView height without tabbar 【发布时间】:2012-05-31 15:41:04 【问题描述】:

您好,如果我打印以下内容,我在标签栏中嵌入了一个简单的 uiview:

NSLog(@"%f",self.view.frame.size.height);

我得到的“460.0”看起来像没有状态栏的视图的高度。

如果我想在没有标签栏的情况下获得视图的高度怎么办?有什么比减法更干净的吗?

谢谢 卢卡

【问题讨论】:

【参考方案1】:

我遇到了同样的问题。我的解决方案是子视图 UIView 其大小恰好不包括标签栏。不是那么优雅,但我不必处理减法等等。

【讨论】:

以上是关于android中怎么计算标题栏高度的主要内容,如果未能解决你的问题,请参考以下文章

在 iOS 10 中使用标签栏控制器时,集合视图的高度计算错误

状态栏、导航栏边距

找出 Linux 中任务栏的大小 (C/C++/gtkmm/other)

iOS 10 iMessage 应用扩展:如何计算超高导航栏的高度

CSS+DIV怎么实现网页左右两栏高度一致?

微信小程序自定义搜索标题栏