0

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

我正在使用带有 Eclipse 的最新 SDK。

我正在尝试做本教程 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>

但我没有看到菜单项。看起来像这样 菜单缺失项 有关如何获取这些菜单项显示的任何帮助都会很有用。

谢谢你。

4

6 回答 6

4

引用文档

上面的 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>
于 2013-08-10T16:34:38.073 回答
1

我很确定您一定已经这样做了,但是您是否下载了图标并将它们放在您的 res > drawable 文件夹中?如果您使用深色操作栏,请务必安装浅色图标,反之亦然。我遵循了相同的教程,它对我有用。您的代码看起来正确。

于 2013-09-16T03:00:48.273 回答
1

就放

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

和改变

app:showAsAction="always" 

android:showAsAction="always"
于 2014-11-04T15:58:39.283 回答
0

我认为你的问题在这里:

return super.onCreateOptionsMenu(menu);

将其更改为:

return Boolean.TRUE;

资料来源:android 中的菜单和我的一个旧项目。

于 2013-08-10T17:43:14.343 回答
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);
于 2013-10-10T07:01:11.077 回答
0

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

于 2014-02-25T07:51:01.723 回答