在Android ActionBar中找到项目的位置



是否有办法在操作栏中找到图标的位置?

我使用了下面的代码:

final View actionBarView = getActivity().getWindow().getDecorView().findViewById(getResources().getIdentifier("action_bar_container", "id", "android"));
if (actionBarView != null) {
    final View buttonInActionBar = actionBarView.findViewById(R.id.menu_item);
    if (buttonInActionBar != null) {

如果我像这样设置action_bar_menu_layout:

 <item
        android:id="@+id/menu_item"
        MyApp:actionProviderClass="my_provider"
        MyApp:showAsAction="always|withText|collapseActionView"
        android:orderInCategory="0"
        android:title="@string/item_name"/>

所以通过使用collapseActionView标志,一切工作。但是没有这个标志,就找不到视图。看起来只有在这种情况下,菜单才会通过使用该id作为视图id来构建。

有办法吗?

我就是这么做的。

我使用

:

mItemView = MenuItemCompat.getActionView(menu.findItem(R.id.menu_item));

然后我注册了一个GlobalLayoutListener并在listener中:

    @SuppressWarnings("deprecation")
    @Override
    public void onGlobalLayout() {
        mItemView.getLocationInWindow(mMyItemLocation);
        if (mItemView == null || mMyItemLocation[0] == 0  || mItemView.getRight() == 0 || mItemView.getWidth() == 0) {
            return;
        }
        mLayout.getViewTreeObserver().removeGlobalOnLayoutListener(this);
    }

最新更新