无法在ActionBarSherlock中创建选项菜单

时间:2013-03-14 18:03:03

标签: java android actionbarsherlock

我试图在ActionBarSherlock的帮助下在Android 2.3应用中实现选项菜单。但它没有显示。这是一个简单的XML布局文件" breadcrumb_bar_menu"选项菜单:

<?xml version="1.0" encoding="utf-8"?>
 <menu xmlns:android="http://schemas.android.com/apk/res/android" >
  <item android:id="@+id/inbox"
       android:icon="@drawable/topbar_btn_inbox"      
       android:title= "@string/about" />    

 <item android:id="@+id/sent"
       android:icon="@drawable/topbar_sent"      
       android:title="@string/about" />    
    </menu>

这是我继承自SherlockActivity的活动:

    public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getSupportMenuInflater();
    inflater.inflate(R.menu.breadcrumb_bar_menu, menu);
    return true;
}

但我无法看到活动的选项菜单。我做错了什么?

5 个答案:

答案 0 :(得分:3)

在菜单xml项目的属性中加入android:showAsAction="ifRoom"

 <?xml version="1.0" encoding="utf-8"?>
 <menu xmlns:android="http://schemas.android.com/apk/res/android" >
    <item android:id="@+id/inbox"
       android:showAsAction="ifRoom"
       android:icon="@drawable/topbar_btn_inbox"      
       android:title= "@string/about" />    

    <item android:id="@+id/sent"
       android:showAsAction="ifRoom"
       android:icon="@drawable/topbar_sent"      
       android:title="@string/about" />    
 </menu>

答案 1 :(得分:1)

public boolean onCreateOptionsMenu(Menu menu) {
    // TODO Auto-generated method stub
    com.actionbarsherlock.view.MenuInflater inflater = getSupportMenuInflater();
    inflater.inflate(R.menu.actionoption, menu);
    return true;
}

答案 2 :(得分:0)

您必须为deivce设置navigationmode。 也是你的设备有硬菜单键,如果是,那么你将看不到三个菜单选项点。

答案 3 :(得分:0)

您需要告诉系统您将使用菜单:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setHasOptionsMenu(true);
}

答案 4 :(得分:0)

使optionmenu像其他API一样工作&gt; 2.3.3使用Actionbarsherlock 我做了以下:

菜单文件:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/navigateMenu" 
android:icon="@drawable/icon"
android:title="Menu"
android:orderInCategory:"9"
android:showAsAction="always"
android:titleCondensed="Menu">
<menu>
<item android:id="@+id/id1"
android:icon="@drawable/option1"
android:title="option1" />
<item android:id="@+id/id2"
android:icon="@drawable/option2"
android:title="option2" />
<item android:id="@+id/id3"
android:icon="@drawable/option3"
android:title="option3" />
</menu>
</item>
</menu>

在您的活动代码中: 获取父MenuItem的引用,并使用SHOW_AS_ACTION_ALWAYS属性将其附加到操作栏 参见相同的代码:

活动文件:

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

//To make optionmenu visible on Actionbar for 2.3.3

menu.findItem(R.id.navigateMenu).setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS)
        return true;
    }