【问题标题】:Can't create an options menu in ActionBarSherlock无法在 ActionBarSherlock 中创建选项菜单
【发布时间】:2013-03-14 18:03:02
【问题描述】:

我正在尝试借助 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;
}

但我在活动上看不到选项菜单。我做错了什么?

【问题讨论】:

  • 您在哪个版本的 Android 操作系统上测试应用程序?有硬件菜单按钮吗?
  • @ShajeelAfzal 请仔细阅读我的问题。我说的是版本。

标签: java android actionbarsherlock


【解决方案1】:

在您的菜单 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>

【讨论】:

    【解决方案2】:
    public boolean onCreateOptionsMenu(Menu menu) {
        // TODO Auto-generated method stub
        com.actionbarsherlock.view.MenuInflater inflater = getSupportMenuInflater();
        inflater.inflate(R.menu.actionoption, menu);
        return true;
    }
    

    【讨论】:

      【解决方案3】:

      您必须为设备设置导航模式。 也就是你的设备有硬菜单键,如果是,那么你不会看到三个点的菜单选项。

      【讨论】:

        【解决方案4】:

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

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

        【讨论】:

          【解决方案5】:

          使用 Actionbarsherlock 使 optionmenu 像在其他 API 上一样工作 > 2.3.3 我做了以下:

          菜单文件:

          <?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;
              }
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2021-07-02
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2013-10-12
            相关资源
            最近更新 更多