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;
}
このディスプレイを作成します。