2012-01-27 13 views
4

私はAndroid 2.1をターゲットにしてメニューボタンを使っていくつかのオプションを公開するアプリを持っています。このメニューをICSのアクションバーのオーバーフローボタンから利用できるようにしたいと思いますが、表示に問題があります。Android ICSアクションバーにメニュー項目を表示する

ターゲットAPIを15に変更すると、下部バーのレガシーメニューボタンがICSで消えますが、アクションバーの右上にあるアイコンはそれを置き換えないため、メニュー。私は何もしなかったメニュー項目にshowAsAction属性を追加しようとしました。私は間違いなく4.0.3をEclipseのビルドオプションでターゲットにしています。

私が欲しいのは、ICS Holoテーマを使用していても、どこかにアクセスできるメニューですが、古いデバイスとは下位互換性があります。それについてどうすればいいですか?

答えて

6

普通は、onCreateOptionsMenu(Menu menu)を実装し、メニューのXMLファイル内の目的の項目にandroid:showAsAction="ifRoom"を追加するだけで、それらのアクション項目を追加します。

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:id="@+id/menu_save" 
      android:icon="@drawable/ic_menu_save" 
      android:title="@string/menu_save" 
      android:showAsAction="ifRoom|withText" /> 
</menu> 

あなたはこの事実を考慮しましたか?

編集:

@Override 
public boolean onCreateOptionsMenu(Menu menu){ 
    super.onCreateOptionsMenu(menu); 
    createMenu(menu); 
    return true; 
} 

private void createMenu(Menu menu){ 
    MenuItem mnu1 = menu.add(0, 0, 0, "Logout"); 
    { 
     mnu1.setAlphabeticShortcut('a'); 
     mnu1.setIcon(R.drawable.icon); 
     mnu1.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM); 
    } 
} 
+0

ええ、すべてのメニュー項目にonCreateOptionsMenuが実装され、showAsAction = "isRoom"が設定されていますが、アクションバーにはアプリケーションの名前とアイコン以外は何もありません。 – olane

+0

@IneffablePigeon:ここでは、動作するサンプルプロジェクトです:https://github.com/commonsguy/cw-android/tree/master/Menus/ActionBarBC – CommonsWare

+0

"isRoom"ではなく "ifRoom"を試してください。 – James

0

私は5分前にこの問題を持っていた: はここしばらく前に私のために働いたシンプルimplemantationです。これがまだ役立つかどうかは分かりませんが、解決方法を教えてください:

super.setBooleanProperty( "showTitle"、true);を追加します。 onCreateメソッドへ

@Override 
public void onCreate(Bundle savedInstanceState) { 
super.setBooleanProperty("showTitle", true); 
super.onCreate(savedInstanceState); 
//more code... 

これにより、アクションバーが表示され、メニューボタンの置き換えが行われます。 私はEclipseでAndroid 4をターゲットにしています。古いデバイスでは、バーはタイトルとしてのみ表示され、もちろんデフォルトのメニューボタン操作を聞いています。

関連する問題