2016-06-23 2 views
1

작업 모음에 항목을 추가하는 책에서 작은 응용 프로그램을 구현하려고했습니다. 문제는 항목이 오버플로 메뉴 (세 개의 점이있는 오른쪽 상단 아이콘) 목록에 추가되고 기본 작업 표시 줄 (예상되는 위치)에 추가되지 않는다는 것입니다. ActionBar 대신 "오버플로 메뉴"에 항목이 추가되었습니다.

은 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" 
    /> 

이는 MainActivity가

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 I가 모두의 showAsAction을 설정하려고

을 코드 -이다 "항상"하지만 문제 여전히 지속됩니다. 당신도이 메뉴 옵션 항목을 표시하는 화면 크기와 작업 표시 줄의 제목에 따라

은 (에뮬레이터 블루스 택스입니다)

+0

작업 표시 줄에 메뉴 항목의 여유 공간이 있습니까? 여유가 없다면 "항상"두어도 문제가 해결되지 않습니다. – user3331142

+0

@ user3331142 네, 있습니다 ... ActionBar는 앱 아이콘이있는 앱 이름 만 가지고 있습니다. 당신이 볼 수 있도록 스크린 샷을 업로드했습니다. – Ryuzaki

+0

이것은 이상합니다. 나는 당신의 코드를 가져다가 내가 사용하고있는 작동중인 앱에서 사용했고 아이콘이 표시되었습니다. – user3331142

답변

0

, 충분한 공간이되지 않을 수 있습니다. '항상'이상 권장되는 두 가지 모두 'ifRoom'으로 설정하더라도 아무런 공간이 없으면 메뉴 항목이 오버플로 메뉴 항목에 표시됩니다.

더 큰 화면 크기에서 레이아웃이 어떻게 보이는지 확인하고 메뉴 항목에 대한 여유 공간을 늘리거나 작업 막대 제목을 줄이면 더 많은 공간을 확보하거나 메뉴 항목 레이아웃을 수평 방향으로 관찰하여 문제는 여전히 지속됩니다.

문제가되지 않는 경우 두 항목을 모두 "ifRoom"으로 설정하고 옵션 메뉴를 생성하고 부 풀리는 방법에 대한 코드를 게시 할 때 작업 표시 줄의 스크린 샷을 게시하십시오.

메뉴 항목 레이아웃이 기기에 따라 달라집니다. 화면 크기가 큰 기기는 기본 작업 표시 줄에 더 많은 메뉴 항목을 표시 할 수 있기 때문입니다. 희망이 도움이됩니다.

+0

답장을 보내 주셔서 감사합니다. 스크린 샷과 인플레이션 코드를 게시했습니다. 그것을 확인할 수 있습니다. – Ryuzaki

+0

휴대 전화 또는 Android Studio 에뮬레이터에서 테스트 해 보셨습니까? 그리고 수업이 Activity를 확장하기 때문에 app : showAsAction 대신에 android : showAsAction을 사용해보십시오. –

+0

오! 그것은 그것을 해결했습니다! 나는 더 많은 독서를했고 Activity를 사용하는 동안 app : and android가 아니라는 것을 알았지 만, 응용 프로그램은 여전히 ​​완벽하게 실행 중이지만이 오류를 제공합니다. - "app : appAspat를 appcompat 라이브러리와 함께 사용해야합니다. xmlns : app = "http://schemas.android.com/apk/res-auto"less ... (Ctrl + F1) appcompat 라이브러리를 사용할 때 메뉴 리소스는 app : namespace의 showAsAction을 참조해야합니다 , 안드로이드 : 네임 스페이스가 아닙니다. 마찬가지로, appcompat 라이브러리를 사용하지 않을 때는 android : showAsAction 속성을 사용해야합니다. " – Ryuzaki

관련 문제