首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Unable to make options menu..shows up as context menu android

Unable to make options menu..shows up as context menu android
EN

Stack Overflow用户
提问于 2012-07-11 14:16:09
回答 3查看 410关注 0票数 0

我想在android中制作选项菜单,但它显示为上下文菜单。下面是代码。

代码语言:javascript
复制
@Override
    public boolean onCreateOptionsMenu(Menu menu)
    {

     menu.add("Item1");
     menu.add("Item2");

     return true;
    }

有没有人能帮我理解一下它是作为上下文菜单出现的。谢谢

EN

回答 3

Stack Overflow用户

发布于 2012-07-11 14:21:28

尝尝这个

代码语言:javascript
复制
public static final int ADD_CATEGORY_INDEX1 = Menu.FIRST;
public static final int ADD_CATEGORY_INDEX2 = Menu.FIRST+1;

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    super.onCreateOptionsMenu(menu);

         menu.add(0, ADD_CATEGORY_INDEX1, 0, "item1"); 
         menu.add(0, ADD_CATEGORY_INDEX2, 0, "item2"); 

    return super.onCreateOptionsMenu(menu);
}
票数 0
EN

Stack Overflow用户

发布于 2012-07-11 14:22:11

如果你想创建一个菜单,可以这样做:

代码语言:javascript
复制
@Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = this.getMenuInflater();
    inflater.inflate(R.layout.menu, menu);
    return true;
}

它显示为上下文菜单,因为您没有为您的菜单设置布局,并且您不会膨胀它。使用提供的代码和类似如下的XML代码:

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Menu button - Home -->
<item 
    android:id="@+id/homeButton"
    android:icon="@drawable/homeicon"
    android:title="@string/homeButton"
    android:textSize="10sp"
    />
<!-- Menu button - Location -->
 <item 
    android:id="@+id/locationButton"
    android:icon="@drawable/locbutton"
    android:title="@string/locationButton"
    android:textSize="10sp"
    />
 <!-- Menu button - Dining -->
  <item 
    android:id="@+id/diningButton"
    android:icon="@drawable/diningbutton"
    android:title="@string/diningButton"
    android:textSize="10sp"
    />
  <!-- Menu button - Top25 -->
   <item 
    android:id="@+id/topXXVButton"
    android:icon="@drawable/topxxv"
    android:title="@string/topXXVButton"
    android:textSize="10sp"
    />

所有这些都应该能让你继续前进。

希望它能帮上忙!

票数 0
EN

Stack Overflow用户

发布于 2012-07-11 17:08:25

尝试这样做:

代码语言:javascript
复制
  @Override
  public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.layout.device_menu, menu);
    setMenuBackground();
    return true;
  }

  private void setMenuBackground() {
    getLayoutInflater().setFactory(new LayoutInflater.Factory() {
        public View onCreateView(final String name,final Context context,final AttributeSet attributeSet) {

            if (name.equalsIgnoreCase("com.android.internal.view.menu.IconMenuItemView")) {  
                try {
                    final LayoutInflater f = getLayoutInflater();
                    final View view = f.createView(name, null, attributeSet);
                    //view.setBackgroundResource(R.drawable.menu_selector);

                    new Handler().post(new Runnable() {
                        public void run() {
                           view.setBackgroundResource(R.drawable.menu_selector);               
                        }
                    });
                    return view;
                } catch (final Exception e) {
                    Log.e("##Menu##","Could not create a custom view for menu: "+ e.getMessage(), e);                                                                           
                }
            }
            return null;
        }
    });
}

@Override
public View onCreateView(String name, Context context,
        AttributeSet attrs) {
    // TODO Auto-generated method stub
    return null;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case R.id.menuItem1:
        //code for first menu item click     
             break;
        case R.id.menuItem2:
            //code for second menu item click      
             break;
    }
    return true;
}

下面是menu_selector.xml (在drawable文件夹中):

代码语言:javascript
复制
   <?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true" android:drawable="@color/menu_pressed"/>
    <item android:state_focused="true" android:drawable="@color/menu_focused"/>
    <item android:drawable="@color/menu_normal"/>
</selector>

下面是device_menu.xml (在layout文件夹中):

代码语言:javascript
复制
    <menu xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:id="@+id/menuItem1"
        android:icon="@drawable/icon_for_item_1"
        android:title="Item1" />
    <item android:id="@+id/menuItem2"
       android:icon="@drawable/icon_for_item_2"
       android:title="Item2" />

   </menu>

这是colors.xml (在"res“文件夹的"values”文件夹中):

代码语言:javascript
复制
     <?xml version="1.0" encoding="utf-8"?>
      <resources xmlns:android="http://schemas.android.com/apk/res/android">

             <color name="menu_normal">#ff222222</color>
             <color name="menu_focused">#ff444444</color>
             <color name="menu_pressed">#ffcccccc</color>

       </resources>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11426632

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档