ActionbarCompat не показывает значки действий

При использовании ActionbarCompat в качестве Actionbar BackPort у меня возникает проблема, заключающаяся в том, что значки действий не отображаются — тот же код/разрешение работает с actionbarsherlock.

Я что-то не так делаю или это еще не поддерживается? Мне также не хватает всей части Menu/MenuItem getSupportMenuInflater(), которую ABS имеет в совместимости с ActionBar - может ли кто-нибудь пролить свет на это?


person ligi    schedule 16.08.2013    source источник


Ответы (2)


На этот вопрос уже был дан ответ в панели действий, не отображаемой с помощью AppCompat.

Добавьте следующее пространство имен в элемент «меню» в вашем XML-файле.

xmlns:compat="http://schemas.android.com/apk/res-auto" 

Затем измените атрибут showAsAction, чтобы использовать новое пространство имен.

compat:showAsAction="ifRoom"

Вот полный пример с одним пунктом в меню с изменениями в строках 2 и 6 (из панели действий не отображается с AppCompat)

<menu xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:compat="http://schemas.android.com/apk/res-auto" >
    <item android:id="@+id/action_whatever"
      android:icon="@drawable/ic_action_whatever"
      android:title="@string/whatever"
      compat:showAsAction="ifRoom"  />
</menu>
person avparker    schedule 02.03.2014
comment
Пожалуйста, добавьте основные части ссылок как часть вашего ответа. - person CSchulz; 02.03.2014
comment
Обновлено, чтобы включить полный ответ и пример, предложенный CSchulz. - person avparker; 29.03.2014

При использовании новой ActionBarActivity вам больше не нужен getSupportMenuInflator. Ваш код должен выглядеть так:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.main, menu);
    return super.onCreateOptionsMenu(menu);
}

При вызове invalidateOptionsMenu с помощью ActionBarActivity вам необходимо использовать новую версию поддержки:

supportInvalidateOptionsMenu();

Это единственные два основных различия между ActionBarSherlock и новым ActionBarActivity, которые я обнаружил.

person blackcj    schedule 16.08.2013
comment
хм, мой код выглядел так, но значки действий не отображались - person ligi; 16.08.2013
comment
Можете ли вы опубликовать свое меню xml и метод onCreate? Вы расширяете ActionBarActivity? - person blackcj; 16.08.2013
comment
действительно трудно извлечь, и я в основном вернулся к ABS, где это просто сработало из коробки, и я думаю, что жду, пока AppCompat созреет, прежде чем попробовать еще раз ;-) - person ligi; 16.08.2013