ActionBar Action Items not showing [duplicate]

2019-03-09 18:43发布

This question already has an answer here:

i have a very simple code, but a problem that I cannot solve even after long google searching. I want to have some Action Items in my ActionBar, but whenever I run the App, all I see is a ActionBar with the App logo and the title, but no Action Items.

It would be great, if you could help me, probably I am just missing the most obvious thing ;)

Thats the method in my ActionBarActivity:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu items for use in the action bar
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.main_activity_actions, menu);
    return super.onCreateOptionsMenu(menu);
}

And this is the relevant .xml file for the ActionBar (named main_activity_actions.xml):

<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:id="@+id/action_search"
      android:icon="@drawable/ic_action_search"
      android:title="@string/action_search"
      android:showAsAction="always"  />
<item android:id="@+id/action_compose"
      android:icon="@drawable/ic_action_compose"
      android:title="@string/action_compose" 
      android:showAsAction="always"/>
</menu>

4条回答
手持菜刀,她持情操
2楼-- · 2019-03-09 19:06

Try this:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu items for use in the action bar
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.main_activity_actions, menu);
    return true;
}
查看更多
做自己的国王
3楼-- · 2019-03-09 19:17

This is because if you use the support AppCompat ActionBar library and ActionBarActivity you should create your menus in a different than the standard way of creating XML menus in ActioBarSherlock or the default ActionBar.

So try this code:

<menu xmlns:android="http://schemas.android.com/apk/res/android" 
      xmlns:app="http://schemas.android.com/apk/res-auto">
      <item android:id="@+id/action_search"
          android:icon="@drawable/ic_action_search"
          android:title="@string/action_search"
          app:showAsAction="always"  />
      <item android:id="@+id/action_compose"
          android:icon="@drawable/ic_action_compose"
          android:title="@string/action_compose" 
          app:showAsAction="always"/>
</menu>

and report if this works.

Note: check the extra prefix xmlns:app which should be used instead!

查看更多
时光不老,我们不散
4楼-- · 2019-03-09 19:17

Here you go, you need to add the menu in your xml like this:

<menu xmlns:android="http://schemas.android.com/apk/res/android" >
    <item
        android:id="@+id/menu_settings"
        android:orderInCategory="0"
        android:showAsAction="always"
        android:icon="@drawable/menu">
    <menu>
        <item android:id="@+id/action_search"
            android:icon="@drawable/ic_action_search"
            android:title="@string/action_search"
            android:showAsAction="always"  />
        <item android:id="@+id/action_compose"
            android:icon="@drawable/ic_action_compose"
            android:title="@string/action_compose" 
            android:showAsAction="always"/>
        </menu>
    </item>
</menu>
查看更多
放我归山
5楼-- · 2019-03-09 19:29

May sure that you are not using a Style that is rendering your Action Items invisible.

For example if you are using "android:Theme.Holo.Light.DarkActionBar" you get a black action bar so you won't be able to see your black items.

Switch to "android:Theme.Holo.Light" and they will show up.

Look in the file (for example) res/values-v14/styles.xml

查看更多
登录 后发表回答