【问题标题】:Icons are not displaying in Android application图标未显示在 Android 应用程序中
【发布时间】:2013-11-24 17:25:26
【问题描述】:

在 Android 应用程序方面,我完全是新手。请多多包涵。我正在尝试制作一个菜单选项栏,但不知何故图标没有显示。

我在 stackoverflow 上寻找过这个问题的答案,我遇到的答案是“在 Android 3.0+ 上,选项菜单的首选方法(操作栏中的溢出菜单)不会显示图标。如果你具有 11 或更高版本的 android targetSdkVersion,图标将永远不会显示在 Android 3.0+ 的菜单中。如果您将选项菜单项提升为工具栏按钮,图标将显示,并且图标将显示在 Android 1.x/ 2.x 设备。”我很抱歉,但我不确定这意味着什么。有人可以指导我正确的方向吗?任何帮助将不胜感激!

我不确定我做错了什么。到目前为止,这是我的代码。

MainActivity.java

package com.example.useoptionsmenu;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;

public class MainActivity extends Activity {

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

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

public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
    case R.id.about:
    startActivity(new Intent(this, About.class));
    return true;
    case R.id.help:
    startActivity(new Intent(this, Help.class));
    return true;
    default:
    return super.onOptionsItemSelected(item);
    }
}

}

main.xml

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

<item
    android:id="@+id/action_settings"
    android:orderInCategory="100"
    android:showAsAction="never"
    android:title="@string/action_settings"/>
<item
    android:id="@+id/about"
    android:showAsAction="always"
    android:orderInCategory="1"
    android:icon="@drawable/ic_action_about"
    android:title="About"/>
<item
    android:id="@+id/help"
    android:showAsAction="always"
     android:orderInCategory="2"
    android:icon="@drawable/ic_action_help"
    android:title="Help"/>

</menu>

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.useoptionsmenu"
android:versionCode="1"
android:versionName="1.0" >

<uses-sdk
    android:minSdkVersion="8"
    android:targetSdkVersion="18" />

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name="com.example.useoptionsmenu.MainActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity
        android:name="com.example.useoptionsmenu.About"
        android:label="@string/title_activity_about" >
    </activity>
    <activity
        android:name="com.example.useoptionsmenu.Help"
        android:label="@string/title_activity_help" >
    </activity>
</application>

</manifest>

【问题讨论】:

    标签: android android-optionsmenu android-icons


    【解决方案1】:

    您必须将此添加到要在标题中显示的项目中:

        android:showAsAction="ifRoom"
    

    这样您的菜单将是:

    <menu xmlns:android="http://schemas.android.com/apk/res/android" >
    
    <item
        android:id="@+id/action_settings"
        android:orderInCategory="100"
        android:showAsAction="ifRoom"
        android:title="@string/action_settings"/>
    <item
        android:id="@+id/about"
        android:showAsAction="ifRoom"
        android:orderInCategory="1"
        android:icon="@drawable/ic_action_about"
        android:title="About"/>
    <item
        android:id="@+id/help"
        android:showAsAction="ifRoom"
         android:orderInCategory="2"
        android:icon="@drawable/ic_action_help"
        android:title="Help"/>
    
    </menu>
    

    从您不会在标题中显示的项目中删除 android:showAsAction="ifRoom" 行。

    【讨论】:

    • 如果我进行上述更改,我的应用程序会崩溃。 :(
    • 尝试只设置一个 ifRoom
    • 可以附上logcat吗?
    • 11-24 18:39:29.615: E/AndroidRuntime(936): 致命异常: main 11-24 18:39:29.615: E/AndroidRuntime(936): java.lang.IllegalArgumentException: SHOW_AS_ACTION_ALWAYS、SHOW_AS_ACTION_IF_ROOM 和 SHOW_AS_ACTION_NEVER 是互斥的。 11-24 18:39:29.615: E/AndroidRuntime(936): 在 com.android.internal.view.menu.MenuItemImpl.setShowAsAction(MenuItemImpl.java:555) 11-24 18:39:29.615: E/AndroidRuntime( 936):在 android.view.MenuInflater$MenuState.setItem(MenuInflater.java:409)
    • 嗨 iGio90,它仍然无法正常工作。它认为这与用户在上一篇文章中提到的“将选项菜单项提升为工具栏按钮”有关。但我不知道这意味着什么以及我应该如何更改我的应用程序来做到这一点。 :(
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多