在我的应用程序的教程中,我希望能够做到以下几点 观点 到动作栏中的特定图标,比如下图中黄色箭头指向灯泡。
这里是图片中菜单项的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 是 无效.我怎么能得到 左边 菜单中每个图标的坐标?
最后,通过使用调试器,我发现 ToolBar
上面显示有3个孩子。
ActionMenuView
Linearlayout
其中包含 Spinner
AppCompatImageButton
的导航按钮该 ActionMenuView
有5个子女 ActionMenuItemView
. 这些是我要找的图标。
所以为了指向第二个图标的左下角,我使用了这段代码。
ViewGroup overflowMenu = (ViewGroup) scToolbar.getChildAt(0);
int bulbLeft = overflowMenu.getLeft() + overflowMenu.getChildAt(1).getLeft();