Android操作栏不会显示项目

时间:2013-08-10 16:26:47

标签: android android-actionbar android-support-library

我无法在操作栏中显示图标。

我正在使用最新的Eclipse与Eclipse。

我正在尝试做这个教程 http://developer.android.com/training/basics/actionbar/adding-buttons.html

我的MainActivity.java是

package com.example.myfirstapp;

import android.os.Bundle;
import android.app.Activity;
import android.support.v7.app.ActionBarActivity;
import android.view.Menu;
import android.view.MenuInflater;

public class MainActivity extends ActionBarActivity   {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

  @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu items for use in the action bar
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.main, menu);
        return super.onCreateOptionsMenu(menu);
    }    
}

菜单下的我的main.xml是

<menu xmlns:android="http://schemas.android.com/apk/res/android" >
    <item android:id="@+id/action_search"
          android:icon="@drawable/ic_action_search"
          android:title="@string/action_search"
          android:showAsAction="always" />
    <item android:id="@+id/action_settings"
          android:title="@string/action_settings"
          android:showAsAction="always" >
    </item>

</menu>

但我没看到菜单项。看起来像这样 menu missing items 有关如何获取这些菜单项的任何帮助都很有用。

谢谢。

6 个答案:

答案 0 :(得分:4)

引用docs

  

上面的showAsAction属性使用自定义命名空间   在标签中定义。使用任何XML时都需要这样做   由支持库定义的属性,因为这些属性可以   旧设备上的Android框架中不存在。所以你必须使用   您自己的命名空间作为由...定义的所有属性的前缀   支持图书馆。

所以做以下修改:

<menu xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:yourapp="http://schemas.android.com/apk/res-auto" >
    <item android:id="@+id/action_search"
          android:icon="@drawable/ic_action_search"
          android:title="@string/action_search"
          yourapp:showAsAction="always" />
    <item android:id="@+id/action_settings"
          android:title="@string/action_settings"
          yourapp:showAsAction="always" >
    </item>
</menu>

答案 1 :(得分:1)

我很确定你一定已经这样做了,但是你下载了这些图标并将它们放在你的res中吗?可绘制的文件夹?如果您使用的是深色操作栏,请务必安装浅色图标,反之亦然。 我按照相同的教程,它适用于我。您的代码看起来是正确的。

答案 2 :(得分:1)

刚刚放

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

app:showAsAction="always" insted of android:showAsAction="always"

答案 3 :(得分:0)

我认为你的问题在这里:

return super.onCreateOptionsMenu(menu);

将其更改为:

return Boolean.TRUE;

来源:Menus in android和我的一个旧项目。

答案 4 :(得分:0)

我也在关注教程,我认为错误在于:

// Inflate the menu items for use in the action bar
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.main, menu);

应该是

getMenuInflater().inflate(R.menu.main_activity_actions, menu);

答案 5 :(得分:0)

在我按照教程逐步完成后,这个问题花了我一些时间。有趣的是,我的问题是我使用了浅色搜索按钮图像,同时选择了黑暗的Holo主题。因此,我的搜索按钮在黑暗的背景中变得不可见(它就在那里)。如果你遇到同样的问题,你可以尝试调整你的主题。