Android选项菜单无法显示

时间:2014-01-19 08:25:41

标签: java android xml menu

我是Android新手,我一直在尝试添加一个简单的添加按钮,如下所述

list_menu.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item 
        android:id="@+id/menu_insert"
        android:icon="@android:drawable/ic_menu_add"
        android:title="@string/menu_insert"              
    />     
</menu>

MyActivity.java

@Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        super.onCreateOptionsMenu(menu);
        getMenuInflater().inflate(R.menu.list_menu, menu);

        return true;  
    }

我在傻瓜系列书中读到ic_menu_add已经存在于资源中,我不需要添加它,但是当我运行此代码时它不会显示。我试图添加一个同名的自定义图标仍然没有按钮。请有人帮帮我。

10 个答案:

答案 0 :(得分:11)

如果你使用片段,那么你需要在onCreate()中使用它:

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

答案 1 :(得分:9)

我正在处理同样的问题..阅读一些查询和文档..希望这可能会对你有帮助。

这是我的菜单的XML文件..

<item
    android:id="@+id/action_send_feedback"
    android:orderInCategory="100"
    android:showAsAction="always"
    android:title="@string/action_send_feedback"/>

<item 
    android:id="@+id/action_share_app"
    android:orderInCategory="100"
    android:showAsAction="ifRoom"
    android:title="@string/action_share_app"
    android:icon="@drawable/ic_action_share" />

<item
    android:id="@+id/action_rate_app"
    android:orderInCategory="100"
    android:showAsAction="never"
    android:title="@string/action_rate_app"/>

JAVA代码就在这里..

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

对于具有选项按钮(在手机底部)的Android手机,按下按钮时会显示showAsAction =“never”的菜单项..否则它们将在操作栏选项菜单中正常显示。

参考:http://developer.android.com/guide/topics/ui/menus.html#options-menu

答案 2 :(得分:2)

不需要调用super()方法。请尝试替换onCreateOptionsMenu

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

答案 3 :(得分:1)

如果您将清单中的TargetSDK设置为5,则会显示图标。

如果您要定位较新的Android SDK(3.0及更高版本),操作栏会接管菜单,默认情况下不会显示图标。

你可以试试这个:

How to show icons in ActionBar overflow menu?

答案 4 :(得分:1)

对我来说,我必须将以下代码添加到活动xml:

 <androidx.appcompat.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@color/colorPrimary"
        android:theme="@style/AppTheme"
        app:popupTheme="@style/Theme.AppCompat.Light.DarkActionBar"
        app:title="@string/app_name"
        app:titleMarginStart="24dp"
        app:titleTextColor="@android:color/white" />

然后转到activity.java:  onCreate

Toolbar toolbar = findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

    @Override
public boolean onCreateOptionsMenu(Menu menu) {
    //super.onCreateOptionsMenu(menu);
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

然后片段onCreate:

 setHasOptionsMenu(true);

答案 5 :(得分:0)

您是否错过了xml文件中的这些行检查一次

  

的xmlns:工具= “http://schemas.android.com/tools”

     

工具:上下文= “MainActivity”

如果您错过了这是导致显示选项菜单的问题

答案 6 :(得分:0)

希望以下代码能为您提供帮助:

import { Injectable } from '@angular/core';
import { Http } from '@angular/http';
import 'rxjs/add/operator/map';


@Injectable()
export class GetService {
constructor(private http:Http) { }


GetUsers(){
  return this.http.get('http://localhost:8080/checkUsers')
    .map(result => result.json());
           }
 }

请提及DarkActionBar作为您在Android Manifest File中使用的主题。

答案 7 :(得分:0)

我遇到过这个问题。但就我而言,我在Framelayout中添加了工具栏。最重要的是,我添加了一个匹配父级的滚动视图。现在ScrollView采用了点击控件,而不是工具栏。因此,如果您使用的是FrameLayout,您的工具栏会被认为是最顶层的视图。

答案 8 :(得分:0)

添加

app:showAsAction="always"

转到菜单项。

答案 9 :(得分:0)

如果它未显示在您的活动中,请确保在活动的onCreate()中调用setSupportActionBar(R.id.my_toolbar)