1

Javaコードでアクションバーアイコンを設定することはできますが、XMLで設定したときにそれらを表示させることができません。XMLで設定したいです。

以下は、同じことを達成するための2つの試みです。アクションバーの3つのアイコンです。2番目のアプローチが失敗する理由を説明できますか?

(注:私の最終バージョンでは、3つのうち2つをオーバーフローメニューに保持するつもりであり、テスト中に3つすべてを表示しようとしています。)

このXML:

<?xml version="1.0" encoding="utf-8"?>
    <menu xmlns:android="http://schemas.android.com/apk/res/android">
        <item   android:id="@+id/menuConfig"
                android:title="Configuration"
        />
        <item   android:id="@+id/menuAbout"
                android:title="About" 
        />
        <item   android:id="@+id/menuHelp"
                android:title="Help" 
        />
    </menu>

そしてこのJava:

@Override
public boolean onCreateOptionsMenu(Menu menu) 
{
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.optionsmenu, menu);

    MenuItem settings = menu.findItem(R.id.menuConfig);     
    settings.setIcon(R.drawable.settings);
    settings.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);

    MenuItem about = menu.findItem(R.id.menuAbout);     
    about.setIcon(R.drawable.about);
    about.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);

    MenuItem help = menu.findItem(R.id.menuHelp);       
    help.setIcon(R.drawable.help);
    help.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);

    return true;
}   

このディスプレイを作成します。

ここに画像の説明を入力してください

一方、このXML:

<?xml version="1.0" encoding="utf-8"?>
    <menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item   android:id="@+id/menuConfig"
            android:title="Configuration"
            android:icon="@drawable/settings"
            showAsAction="ifRoom"
    />
    <item   android:id="@+id/menuAbout"
            android:title="About" 
            android:icon="@drawable/about"
            showAsAction="ifRoom"
    />
    <item   android:id="@+id/menuHelp"
            android:title="Help" 
            android:icon="@drawable/help"
            showAsAction="ifRoom"
    />
</menu>

そしてこのJava:

@Override
public boolean onCreateOptionsMenu(Menu menu) 
{
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.optionsmenu, menu);

    return true;
}   

このディスプレイを作成します。

ここに画像の説明を入力してください

4

1 に答える 1

2

それで大丈夫です。

オーバーフロー メニューにはテキストのみが表示されます。アイコンは、アイテムがアクションとしてアクション バーに表示されている場合にのみ使用されます。

アクションバーにアイコンを表示したい場合は、使用する必要があります

android:showAsAction="ifRoom"

それ以外の

showAsAction="ifRoom"
于 2012-05-21T16:37:22.440 に答える