我该如何确定Android ActionBar中选项菜单对象的相对位置?

3
在 Honeycomb ActionBar 中,我正在尝试确定出现为我的ActionBar“showAsAction”选项的图标的位置。我设置了几个图标仅在有空间时才出现。当应用程序首次运行时,我想在每个图标下包含有用的注释。为了正确定位注释,我需要知道这些图标的位置。
我从活动中调用了getActionBar(),但图标不出现在ActionBar的视图中。我知道我可以通过onPrepare和OptionsMenu的onCreate获取菜单项的句柄,但它们不包含任何定位信息,因为ActionBar还没有被渲染。有什么想法吗?我也探索了onMenuVisibilityListener,但此时ActionBar仍然不包含我可以用来计算选项菜单图标相对位置的任何信息。
如果有一种方法也可以确定哪些ActionBar项目实际上正在出现,我也可以计算放置物品的位置。
1个回答

1
我想在应用程序首次运行时,在每个图标下面包含有用的注释。
然后在第一次运行时加载不同的菜单XML资源,其中包括android:showAsActionwithTextifRoom
您可以将其作为用户的配置选项,以便用户可以选择使用哪种样式。
如果有一种方法也可以确定实际出现的操作栏项目,那么我也可以计算放置事物的位置。
除了您实际上无法在那里放置任何东西。工具栏按钮占用整个操作栏高度。

1
我想我表述不够清楚。我的意思是我正在尝试制作一个闪屏,它可以指出ActionBar上的不同功能,并简要解释每个操作将做什么——这段文字比使用“withText”后面会跟着的一两个单词更多。关于放置事物,我指的是,这段文字将成为出现在ActionBar下方的布局的一部分。 - Steven
@Steven:这更有点合理了,尽管我认为那是不可能的。无论你想出什么方法(例如,在“ActionBar”视图层次结构内进行嗅探),都不可靠,因为“ActionBar”的内部实现未记录在案。虽然你的意图是高尚的,但这只是Android今天不支持的用例。 - CommonsWare
有没有可能获取整体活动视图,以便我可以按其ID搜索可见视图?我的意思是,是否有一种类似于postCreate事件的方法,以及获取活动完整视图层次结构的方式? - Steven
@Steven:你可以在 setContentView() 之后随时调用 findViewById() 来查找 你自己膨胀的 小部件。操作栏不是你的代码,也不是内容视图的一部分。虽然你可以尝试从内容视图向上导航视图层次结构,但无法保证哪些小部件会出现,它们是否在所有 Android 操作系统版本上都相同等等。这将会破坏封装性。无论你做什么都是不可靠的,因为它将假定内部实现的特性。如果你珍视你的用户,请勿发布不可靠的代码。 - CommonsWare
感谢您的反馈!我现在会将其搁置。 - Steven

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接