2012-06-30 20 views
6

私はABSでICSのルックアンドフィールに自分のアプリを再レイアウトしようとしています。 ActionBar自体を取得するのは素敵で簡単でしたが、メニュー項目を追加することはできませんでした。ActionBarSherlockの項目がオーバーフローで表示されない

私のコードは次のようになります。

@Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     super.onCreateOptionsMenu(menu); 
     MenuInflater inflater = getSupportMenuInflater(); 
     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/backup" android:title="@string/backupLabel"/> 
    <item android:id="@+id/restore" android:title="@string/restoreLabel"/> 
</menu> 

アクションバーのショーが、メニューが2.1メニューとして振る舞う - のみ利用可能なしオーバーフローでメニューボタンから起動します。これはICSエミュレータでも当てはまります。メニューをアクティブにするにはメニューボタンを使用する必要があります。

android:showAsAction = "ifRoom"を追加すると、アイテムはアクションアイテムとして表示されますが、オーバーフローには表示されません。

すべて意味がありますか?

私には何が欠けていますか?

+0

http://stackoverflow.com/questions/9286822/how-to-force-use-of-overflow-menu-on -devices-with-menu-button –

+0

http://stackoverflow.com/questions/8758263/how-to-force-overflow-menu-on-android-actionbar-compat –

+0

Paulは、提供されたリンクで問題を解決しましたか? – Warpzit

答えて

0

ソフトウェアではなく、ハードウェアキーボードが有効になっているエミュレータを使用している可能性があります。オーバーフローメニューのアクションを表示するには、ソフウォーターコントロール付きのエミュレータを使用します。 screeenshotsには2つの方法があります。

  • 編集既存のAVD

Edit an existing AVD

  • クローン既存のデバイスプロファイル

Clone an existing device profile

1

ForceOverflowは、作成者がそれを決して作成してはならないとの見解で、ABS 4.1.2で削除されています(変更履歴ノートを参照)。私はあなたが期待される行動を見ていると確信しています。専用ハードウェアキー(「メニュー」ボタン)があるため、ICS +を実行しているメニューボタン(たとえば、Nexus S)のデバイスにはオーバーフローメニューが表示されません。

エミュレータ設定を使用してエミュレートされたデバイスからメニューボタンを削除すると、Androidはオーバーフローメニューを追加することがわかります。

4

だけでアクションバーの上にある、このコードboathメニューを使用します。

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

    <item 
     android:id="@+id/backup" 
     android:showAsAction="ifRoom" 
     android:title="backupLabel"/> 
    <item 
     android:id="@+id/restore" 
     android:showAsAction="ifRoom" 
     android:title="restoreLabel"/> 
</menu> 

その表情のように:

enter image description here

あなたが使用している場合ので

android:showAsAction="ifRoom" : Only place this item in the Action Bar if there is room for it. 

android:showAsAction="Never" : Never place this item in the Action Bar. 

あなたのような使用している場合:

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

     <item 
      android:id="@+id/backup" 
      android:showAsAction="ifRoom" 
      android:title="backupLabel"/> 
     <item 
      android:id="@+id/restore" 
      android:title="restoreLabel"/> 
    </menu> 

その表情:1は&アクションバーの上にあるメニューボタンを押したときに第二が開いています。

enter image description here

注:< 3.0アンドロイドOSでその作業罰金はそれほど心配しないでください。しかし、android:showAsAction="ifRoom"という複数のメニュー項目(3つ以上)がある場合、はデバイスの画面サイズに依存しています。

Protraitで

enter image description here

景観で:私は道の下に使用することができsaggestでしょすべての上に行った後

enter image description here


< 3.0アンドロイドOS:

enter image description here

コード:

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

    <item 
     android:id="@+id/file" 
     android:showAsAction="ifRoom" 
     android:title="file"> 

     <!-- "file" submenu --> 
     <menu> 
      <item 
       android:id="@+id/create_new" 
       android:title="create_new"/> 
      <item 
       android:id="@+id/open" 
       android:title="open"/> 
     </menu> 
    </item> 

</menu> 
関連する問題