Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/178.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 显示应用程序图标和菜单项之间大空间的操作栏_Android_Android Actionbar_Menuitem - Fatal编程技术网

Android 显示应用程序图标和菜单项之间大空间的操作栏

Android 显示应用程序图标和菜单项之间大空间的操作栏,android,android-actionbar,menuitem,Android,Android Actionbar,Menuitem,我的操作栏在左边显示应用程序图标,然后有一个很大的空间,然后在右边显示我的一些菜单项(其余的进入溢出状态)。问题是“大空间”足够容纳多个图标。为什么它没有被使用 我的菜单资源如下所示: <?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+id/menu_a"

我的操作栏在左边显示应用程序图标,然后有一个很大的空间,然后在右边显示我的一些菜单项(其余的进入溢出状态)。问题是“大空间”足够容纳多个图标。为什么它没有被使用

我的菜单资源如下所示:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">

  <item
    android:id="@+id/menu_a"
    android:icon="@drawable/a"
    android:title="a"
    android:orderInCategory="100"
    android:showAsAction="ifRoom" >

    <menu>
      <item ... />
      ...
    </menu>
  </item>
  ...
  <item
    android:id="@+id/menu_n"
    android:icon="@drawable/n"
    android:title="n"
    android:orderInCategory="100"
    android:showAsAction="ifRoom" >
    ...
  </item>
</menu>


我怀疑它与我已禁用的应用程序标题(SetDispAnalysShowTitleEnabled)有关。也许我做错了?

你的代码没有问题

默认情况下,即使有足够的空间容纳4-5个菜单项,AnationBar也只允许2-3个菜单项

可能是为了维护更好的UI

因此,与其

android:showAsAction="ifRoom"
使用


让菜单项始终出现在操作栏上,而不是进入溢出菜单。

那么,如何使其在各种大小的屏幕上工作?我希望避免编写计算图标大小的代码。这就是为什么,为了支持所有屏幕大小,我们必须使用ifRoom。但在任何屏幕上,3个菜单项都不会有问题。此外,这些菜单项是多么重要,用户不希望他的操作栏中填满它们。你最好说你有多少个菜单项,以及必须始终显示多少个。那么,你是说显示2个图标(在我的京瓷上)的限制是出于设计,而不是按照开发者的要求显示多少?你确定吗?是的。但是,您可以使用android:showAsAction=“always”确定,谢谢您的确认,而不是按照开发人员要求的数量显示。而且,是的,我对“总是”很熟悉——只是尽量避免。
  @Override
  public boolean onCreateOptionsMenu (Menu menu)
  {
    getMenuInflater().inflate(R.menu.nav_menu, menu);
    return true;
  }
android:showAsAction="ifRoom"
android:showAsAction="always"