#android #android-actionbar #android-view
#Android #android-панель действий #android-просмотр
Вопрос:
Есть ли способ найти положение значка на панели действий?
Я использовал приведенный ниже код:
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, все работает. Но без этого флага представление не найдено. Похоже, что только в этом случае меню создается с использованием этого идентификатора в качестве идентификатора представления.
Есть ли способ это сделать?
Ответ №1:
Именно так я это и сделал.
Я использовал:
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);
}