Android菜单项未显示图标?

4

我创建了一个单一项目菜单,但当弹出菜单时没有图标,只有文本显示。我是否忽略了某些设置。

java File

package com.menu;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;

public class MymenuActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.menu, menu);
        return true;
    }
}

menu.xml

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
    <item android:id="@+id/icon"
        android:icon="@drawable/ic_launcher" />
    <item android:id="@+id/text"
        android:title="Text" />
    <item android:id="@+id/icontext"
        android:title="Icon"
        android:icon="@drawable/ic_launcher" />

</menu>

please help


1
你的目标 DPI drawable 目录中是否存在 ic_launcher drawable? - Mo Kargas
1
你解决了吗?我也有完全相同的问题。 - membersound
2个回答

2

请检查您的API级别,可能与此有关:

来源:Android menu icons are not displaying when the API level is above 10

从API Level 11(Android Honeycomb)开始,Android引入了一个新的菜单概念。针对该API级别构建的设备不再具有菜单键。按下键后,不会显示菜单,而是出现了一个新的UI组件:操作栏。操作栏显示尽可能多的菜单项,然后创建一个按钮,在叠加层中显示其余的菜单项。

我认为您正在使用某种主题来阻止操作栏的出现,因此没有菜单项可见。还要阅读有关如何支持平板电脑和手机的指南,以开始了解新的操作栏工作方式。


针对该API级别构建的设备不再具有菜单键。这完全是不正确的。只需看看三星Galaxy设备即可! - IgorGanapolsky

0

你应该添加showAsAction="ifRoom",这样如果有足够的空间,它将显示为图标。

此外,请注意,在使用任何支持库时,应检查此属性的命名空间。

示例:

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    tools:context="com.example.test.MainActivity" >

    <item
        android:icon="@drawable/ic_action_alerts_and_states_warning_holo_dark"
        app:showAsAction="ifRoom" 
        android:title="sorting"/>
</menu>

我曾经遇到过同样的问题。我忘记在我的菜单中添加xmlms:app命名空间。请确保showAsAction使用的是app命名空间,而不是android命名空间。 - sagesolutions

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接