ActionBar 的大小是多少(以像素为单位)?
我需要知道 ActionBar 的确切大小(以像素为单位),以便应用正确的背景图像。
I need to know the exact size of ActionBar in pixels so to apply correct background image.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(15)
要在 XML 中检索 ActionBar 的高度,只需使用
或者如果您是 ActionBarSherlock 或 AppCompat 用户,请使用此值
如果您在运行时需要此值,请使用此值
如果您需要了解此值的定义位置:
To retrieve the height of the ActionBar in XML, just use
or if you're an ActionBarSherlock or AppCompat user, use this
If you need this value at runtime, use this
If you need to understand where this is defined:
从Android 3.2的
framework-res.apk
反编译源码来看,res/values/styles.xml
包含:3.0和3.1似乎是相同的(在至少来自 AOSP)...
From the de-compiled sources of Android 3.2's
framework-res.apk
,res/values/styles.xml
contains:3.0 and 3.1 seem to be the same (at least from AOSP)...
要获取 Actionbar 的实际高度,您必须在运行时解析属性
actionBarSize
。To get the actual height of the Actionbar, you have to resolve the attribute
actionBarSize
at runtime.Honeycomb 示例之一引用
?android:attr/actionBarSize
One of the Honeycomb samples refers to
?android:attr/actionBarSize
我需要在 ICS 兼容性应用程序中正确复制这些高度,并深入研究 框架核心源代码。上面的两个答案都是正确的。
它基本上归结为使用限定符。高度由尺寸“action_bar_default_height”定义,
默认定义为 48dip。但对于 -land 来说,它是 40dip,对于 sw600dp 来说,它是 56dip。
I needed to do replicate these heights properly in a pre-ICS compatibility app and dug into the framework core source. Both answers above are sort of correct.
It basically boils down to using qualifiers. The height is defined by the dimension "action_bar_default_height"
It is defined to 48dip for default. But for -land it is 40dip and for sw600dp it is 56dip.
获取高度
如果您使用最新 v7 appcompat 支持包中的兼容性 ActionBar,则可以使用文档
If you're using the compatibility ActionBar from the recent v7 appcompat support package, you can get the height using
Documentation
使用新的 v7 支持库 (21.0.0)
R.dimen
中的名称已更改为 @dimen/abc_action_bar_default_height_材质 。因此,当从以前版本的支持库升级时,您应该使用该值作为操作栏的高度
With the new v7 support library (21.0.0) the name in
R.dimen
has changed to @dimen/abc_action_bar_default_height_material.When upgrading from a previous version of the support lib you should therefore use that value as the actionbar's height
如果您使用 ActionBarSherlock,您可以使用以下命令获取高度
If you are using ActionBarSherlock, you can get the height with
@AZ13的答案很好,但是根据Android设计指南,ActionBar应该是< a href="http://developer.android.com/design/style/metrics-grids.html#examples" rel="noreferrer">至少 48dp 高。
@AZ13's answer is good, but as per the Android design guidelines, the ActionBar should be at least 48dp high.
Kotlin 中接受的答案:
用法:
Accepted answer in Kotlin :
Usage :
类摘要通常是一个不错的起点。我认为 getHeight() 方法应该足够了。
编辑:
如果您需要宽度,它应该是屏幕的宽度(对吗?)并且可以收集像这样。
The Class Summary is usually a good place to start. I think the getHeight() method should suffice.
EDIT:
If you need the width, it should be the width of the screen (right?) and that can be gathered like this.
在我的 Galaxy S4 上有 > 441dpi> 1080×1920>
使用 getResources().getDimensionPixelSize 获取 Actionbar 高度 我得到 144 像素。
使用公式 px = dp x (dpi/160),我使用的是 441dpi,而我的设备位于
在 480dpi 类别中。所以这样就证实了结果。
On my Galaxy S4 having > 441dpi > 1080 x 1920 >
Getting Actionbar height with getResources().getDimensionPixelSize I got 144 pixels.
Using formula px = dp x (dpi/160), I was using 441dpi, whereas my device lies
in the category 480dpi. so putting that confirms the result.
我自己就是这样做的,这个辅助方法应该对某人有用:
I did in this way for myself, this helper method should come in handy for someone:
来源:appcompact-1.6.1/res/values
Source: appcompact-1.6.1/res/values