在ActionBar上显示菜单项

时间:2015-02-28 05:16:46

标签: android

我想用Action在ActionBar上显示我的菜单项 我发现了一些样品,但这不是我想要的样品

菜单应该是下面的类似图片(溢出图标或文字) enter image description here

我的menu.xml是:

<menu xmlns:android="http://schemas.android.com/apk/res/android" >

<item
    android:id="@+id/action_refresh"
    android:orderInCategory="100"
    android:showAsAction="always"
    android:icon="@drawable/icon"
    android:visible="true"
    android:title="Refresh"/>
 <item
    android:id="@+id/action_settings"
    android:title="Settings">
<item
    android:id="@+id/mapMenu"
    android:title="map menu" />
<item
    android:id="@+id/favMenu"
    android:title="favorite" />
<item
    android:id="@+id/listMenu"
    android:title="List Menu" />  
</item>

和我的android代码:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.menu, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    Toast.makeText(getApplicationContext(), item.getTitle() + " selected", Toast.LENGTH_SHORT).show();

    switch (item.getItemId()) {
    case R.id.mapMenu:
        // do something
        break;
    case R.id.favMenu:
        // do something
        break;
    case R.id.listMenu:
        // do something
        break;
    }
    return true;
}

4 个答案:

答案 0 :(得分:2)

在所有商品标签中写下以下内容

android:showAsAction="never"

然后所有项目都会显示在溢出

例如:

<item
android:id="@+id/mapMenu"
 android:showAsAction="never"
android:title="map menu" />

希望这会对你有所帮助。

答案 1 :(得分:0)

<menu xmlns:android="http://schemas.android.com/apk/res/android" >

<item
    android:id="@+id/main_menu"
    android:showAsAction="always"
    android:icon="@drawable/icon"
    android:visible="true">

<item
    android:id="@+id/action_refresh"
    android:showAsAction="never"
    android:title="Refresh"/>
 <item
    android:id="@+id/action_settings"
    android:title="Settings"
    android:showAsAction="never" />
<item
    android:id="@+id/mapMenu"
    android:title="map menu"
    android:showAsAction="never" />
<item
    android:id="@+id/favMenu"
    android:title="favorite"
    android:showAsAction="never" />
<item
    android:id="@+id/listMenu"
    android:title="List Menu"
    android:showAsAction="never" />  
</item>
</menu>

android:showAsAction:此项目何时以及如何在操作栏中显示为操作项。仅当活动包含ActionBar(在API级别11中引入)时,菜单项才会显示为操作项。

尝试给定的代码。首先创建根项目保持其android:showAsAction:Always然后在该根项目内创建具有android:showAsAction:never的其他项目。

答案 2 :(得分:0)

如果要显示三个点,无论设备菜单按钮如何,那么您可以在应用程序类'onCreate方法 -

中调用下面的代码(基于反射)
 try {
           ViewConfiguration config = ViewConfiguration.get(this);
           Field menuKeyField = ViewConfiguration.class.getDeclaredField("sHasPermanentMenuKey");
           if(menuKeyField != null) {
               menuKeyField.setAccessible(true);
               menuKeyField.setBoolean(config, false);
           }
       } catch (Exception e) {
           e.printStackTrace();
       }
  

警告:这是一个糟糕的黑客攻击,会破坏与其他人的一致性   平台上的应用程序

答案 3 :(得分:0)

谢谢大家 但我添加了android:showAsAction =&#34; ifRoom | withText&#34;结果是:

enter image description here

我还测试了android:showAsAction =&#34; ifRoom | withText&#34;和菜单项隐藏