有没有办法在动作栏中找到图标的位置?
我使用了以下代码:
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来构建菜单。
有办法吗?
答案 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);
}