如何获取动作栏中图标的坐标?

问题描述 投票:0回答:1

在我的应用程序的教程中,我希望能够做到以下几点 观点 到动作栏中的特定图标,比如下图中黄色箭头指向灯泡。

enter image description here

这里是图片中菜单项的XML代码。

<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools" tools:context=".MainActivity">

<item
    android:id="@+id/AbErase"
    android:icon="@android:drawable/ic_delete"
    android:orderInCategory="10"
    android:title="@string/Erase"
    android:tooltipText="@string/Erase"
    app:showAsAction="ifRoom|collapseActionView"
    />

<item android:id="@+id/AbImmediateImplementation"
    android:title="@string/ImmediateImplementation"
    android:checkable="true"
    android:orderInCategory="20"
    app:showAsAction="never|withText"
    android:enabled="true" />

<item android:id="@+id/AbSuggest"
    android:title="@string/Suggest"
    android:tooltipText="@string/Suggest"
    android:icon="@drawable/ic_lightbulb_outline_white_48dp"
    android:orderInCategory="50"
    app:showAsAction="ifRoom|collapseActionView" />

<item android:id="@+id/AbUndo"
    android:title="@string/ActionBarUndo"
    android:tooltipText="@string/ActionBarUndo"
    android:icon="@android:drawable/ic_menu_revert"
    android:orderInCategory="51"
    app:showAsAction="ifRoom|collapseActionView" />

<item android:id="@+id/AbStep"
    android:title="@string/ActionBarStep"
    android:icon="@drawable/ic_play_arrow_white_24dp"
    android:orderInCategory="100"
    app:showAsAction="ifRoom|collapseActionView" />

.....
</menu>

这是我用来获取菜单项的代码 View 隶属 擦除 菜单项。

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; mContext adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.menu_main, menu);

    actionBar.collapseActionView();

    eraseItem = menu.findItem(id.AbErase);
    View eraseItemView = eraseItem.getActionView();
    int eraseItemViewLeft = eraseItemView.getLeft();

    return super.onCreateOptionsMenu(menu);
}

当这个代码执行时: eraseItemView无效.我怎么能得到 左边 菜单中每个图标的坐标?

android menuitem
1个回答
0
投票

最后,通过使用调试器,我发现 ToolBar 上面显示有3个孩子。

  • 在指数0: ActionMenuView
  • 在索引1:a Linearlayout 其中包含 Spinner
  • 在指数2:一个 AppCompatImageButton 的导航按钮

ActionMenuView 有5个子女 ActionMenuItemView. 这些是我要找的图标。

所以为了指向第二个图标的左下角,我使用了这段代码。

    ViewGroup overflowMenu = (ViewGroup) scToolbar.getChildAt(0);
    int bulbLeft = overflowMenu.getLeft() + overflowMenu.getChildAt(1).getLeft();
© www.soinside.com 2019 - 2024. All rights reserved.