在Android ActionBar中查找项目的位置

时间:2014-06-25 15:00:19

标签: android android-actionbar android-view

有没有办法在动作栏中找到图标的位置?

我使用了以下代码:

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来构建菜单。

有办法吗?

1 个答案:

答案 0 :(得分:0)

这就是我做的方式。

我用过:

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

然后我在监听器中注册了一个GlobalLayoutListener:

    @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);
    }