2016-06-23 19 views
1

私は、アクションバーに項目を追加することからなる小さなアプリケーションを実装しようとしています。問題は、アイテムがオーバーフローメニュー(3つの点がある右上のアイコン)のリストに追加され、メインのアクションバー(想定されている場所)には追加されないということです。ActionBarの代わりに「オーバーフローメニュー」に項目が追加される

これはこれはMainActivityは私が "いつも" の両方のshowAsActionが、問題を設定しようとした

package com.newboston.bitsandpizzas; 

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

public class MainActivity extends Activity { 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch(item.getItemId()){ 
     case R.id.action_create_order: 
      Intent intent = new Intent(this,OrderActivity.class); 
      startActivity(intent); 
      return true; 
     case R.id.action_settings: 
      return true; 
     default: 
      return super.onOptionsItemSelected(item); 
    } 
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    getMenuInflater().inflate(R.menu.menu_main,menu); 
    return super.onCreateOptionsMenu(menu); 
} 

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

Screenshot of the application をコード - あるmenu_mainファイル -

<menu xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
tools:context = ".MainActivity" 
xmlns:app="http://schemas.android.com/apk/res-auto"> 

<item 
    android:id="@+id/action_settings" 
    android:title="@string/action_settings" 
    android:orderInCategory="100" 
    app:showAsAction="never" 
    /> 

<item 
    android:id="@+id/action_create_order" 
    android:title="@string/action_create_order" 
    android:icon = "@drawable/create_order" 
    android:orderInCategory="1" 
    app:showAsAction="ifRoom" 
    /> 

ですそれでもなお続く。

(エミュレータがbluestacksである)

+0

メニューバーのアクションバーに空きがありますか?あなたが部屋を持っていない場合は、 "常に"置いてもそれを修正しません。 – user3331142

+0

@ user3331142はい、あります... ActionBarにはアプリ名のアプリアイコンしかありません。私はあなたが一見を持つことができるように、スクリーンショットをアップロードしました。 – Ryuzaki

+0

これは奇妙です。私はあなたのコードを取って、私が使用している作業中のアプリケーションで使用し、アイコンを表示しました。 – user3331142

答えて

0

あなたの画面サイズとあなたのアクションバーのタイトルによっては、あなたも2つのメニューオプション項目を表示するための十分な余地がないかもしれません。 'ifRoom'に両方を設定しても 'always'よりも推奨されていても、空きがなければ、オーバーフローメニュー項目にメニュー項目が表示されます。

これを確認するには、画面サイズが大きいほどレイアウトが大きく見えるようにし、メニュー項目の空き容量を増やしたり、アクションバーのタイトルを短くしたり、水平方向にメニュー項目のレイアウトを観察して問題は依然として続きます。

これが問題でない場合は、両方のアイテムを「ifRoom」に設定し、オプションメニューの作成方法と展開方法をコードに投稿すると、アクションバーの表示方法のスクリーンショットを投稿してください。

メニュー項目のレイアウトは、デバイスによって異なるように見えます。スクリーンサイズが大きいデバイスは、メインのアクションバーに多くのメニュー項目を表示できるためです。 これが役立つことを願っています。

+0

あなたの答えをありがとう。 私はスクリーンショットとインフレコードを掲示しました。それを確認することができます。 – Ryuzaki

+0

携帯電話またはAndroid Studioエミュレータでテストしましたか?あなたのクラスがアクティビティを拡張しているので、app:showAsActionの代わりにandroid:showAsActionを使用してみてください。 –

+0

ああ!それがうまくいった!私はもう少し読んだことがあり、アクティビティを使用している間、それはアプリケーションであると考えられていることを学びました。アンドロイドではありませんが、アプリケーションはまだこのエラーを出しています("app:appAspatをappcompatライブラリxmlns:app = "http://schemas.android.com/apk/res-auto" less ...(Ctrl + F1) appcompatライブラリを使用する場合、メニューリソースはapp:namespaceのshowAsActionを参照する必要があります同様に、appcompatライブラリを使用しないときは、android:showAsAction属性を使用する必要があります。 – Ryuzaki

関連する問題