是否有办法在操作栏中找到图标的位置?
我使用了下面的代码:
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);
}