我遇到了同样的问题。在纵向模式的手机设备上,操作栏被分割。因此,菜单项位于顶部的操作栏中,下面的第二个操作栏(tabbar)中的选项卡。我只是没有找到任何可能的方法来确定操纵杆的高度:在构建屏幕之前查看屏幕上剩余的空间。
所以我做了一个假设:
- 小和正常屏幕尺寸设备的动作条在肖像模式分为大屏幕尺寸设备(如Nexus 7)的动作条也被分割在纵向模式
-
- 上XLARGE屏幕尺寸的装置(片剂)的动作条未在纵向模式分割
所以我区分不同screensizes和创建一个bool资源
<!-- res/values/booleans.xml -->
<?xml version="1.0" encoding="utf-8"?>
<resources>
<bool name="is_split_actionbar">false</bool>
</resources>
<!-- res/values-small-port/booleans.xml
res/values-normal-port/booleans.xml
res/values-large-port/booleans.xml -->
<?xml version="1.0" encoding="utf-8"?>
<resources>
<bool name="is_split_actionbar">true</bool>
</resources>
在代码中,我访问值这样的:
Boolean isSplit = getResources().getBoolean(R.bool.is_split_actionbar);
为了让动作条的高度在onCreateView()方法:
TypedValue typedVal = new TypedValue();
getActivity().getTheme().resolveAttribute(R.attr.actionBarSize, typedVal, true); // use android.R when not using ABS
int actionBarHeight = getResources().getDimensionPixelSize(typedVal.resourceId);
和双重高度,如果动作条分割:
if(isSplit)
actionBarHeight = actionBarHeight * 2;
这不是一个理想的解决方案,但对我来说这是可行的。
是的,我也需要知道它是否存在。无论如何,我被告知(通过罗马我认为)在Android办公时间,这根本是不可能的。至少不是简单而直接的方式。因此,我们现在正在尝试使用单个顶级操作栏,并使用常规视图模仿底部操作栏。这不仅解决了这个问题,还解决了另一个问题,我们希望将某些操作“强制”到顶级操作栏。 – pakerfeldt 2012-04-18 11:29:24