我可以获取溢出菜单的位置以及操作栏中的任何其他菜单

时间:2016-12-07 14:31:16

标签: android android-actionbar-compat

我的AppCompatActivity中有一个ActionBar设置,我非常希望能够获得菜单项和溢出菜单的位置,以便我可以使用一个工具提示指向ActionBar中的任何项目。我现在已经尝试了很多方法,并且我确实有办法抓住ActionBar和工具栏,但似乎任何视图中都有左边的零等等。我创建了一个PopupWindow的工具提示组件,我可以将它放在ActionBar上没问题,但我无法弄清楚如何获得菜单项的正确位置。有办法吗?

谢谢
索伦

1 个答案:

答案 0 :(得分:0)

你可能总是得到一个零上和左位置,因为你试图在视图布局之前读取位置。

要在测量视图和布局时获取位置,您必须ViewTreeObserver

在您的活动onCreate()中,您可以执行以下操作:

    toolbar.getViewTreeObserver().addOnPreDrawListener(
        new ViewTreeObserver.OnPreDrawListener() {
            @Override
            public boolean onPreDraw() {
                toolbar.getViewTreeObserver().removeOnPreDrawListener(this);

                // here you can get the real position of each menu item and position your Popup
                return true;
            }
        });