【问题标题】:Why the menu items appear on the optionsMenu?为什么菜单项出现在 optionsMenu 上?
【发布时间】:2014-06-18 12:52:48
【问题描述】:

尽管有一些图标与某些操作相关联并且在Actionbar 中没有足够的空间,但它们出现在optionsMenu 中,而不是出现在overflow 图标中。

我用五个图标膨胀actionBar,每个图标都有一个特定的功能“请参阅下面的XML文件”,具有android:showAsAction=never的项目 我希望它们隐式地驻留在actionBar 上的overflow 图标内,但是当我运行应用程序时,任何具有android:showAsAction=never 属性的项目都会出现在optionsMenu 中。为什么会这样?我希望我能清楚地解释这个问题。

更新

简单地说,我想,如果在ActionBar 上没有空间放置图标,它们应该放在overflow 图标内,如图所示“三个垂直点相互重叠的图标”。

注意事项

我正在使用 Galaxy Note3

为什么我的问题被标记为重复。建议作为重复的问题与我的不同?请再次检查问题。

Java_Code

public class ActionBarActivityTest00 extends Activity {

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

@Override
public boolean onCreateOptionsMenu(Menu menu) {

    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.action_bar_activity_test00, menu);
    return super.onCreateOptionsMenu(menu);
}

XML

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

<!-- Search / will display always -->
<item android:id="@+id/action_search"
      android:icon="@drawable/ic_action_search"
      android:title="action_search"
      android:showAsAction="ifRoom"/>

<!-- Location Found -->
<item android:id="@+id/action_location_found"
      android:icon="@drawable/ic_action_location_found"
      android:title="action_location_found"
      android:showAsAction="ifRoom" />

<!-- Refresh -->
<item android:id="@+id/action_refresh"
      android:icon="@drawable/ic_action_refresh"
      android:title="action_refresh"
      android:showAsAction="ifRoom" />

<!-- Help -->
<item android:id="@+id/action_help"
      android:icon="@drawable/ic_launcher"
      android:title="action_help"
      android:showAsAction="never"/>

<!-- Check updates -->
<item android:id="@+id/action_check_updates"
      android:icon="@drawable/ic_action_refresh"
      android:title="action_check_updates"
      android:showAsAction="never" />

【问题讨论】:

  • @SimplePlan 谢谢你,不幸的是,我刚刚尝试了你的建议,一旦操作栏上的图标溢出,选项菜单上的多余图标会自动替换
  • 您的代码在我这边运行良好。
  • @AmanSingh 你能看到更新吗

标签: android android-actionbar android-actionbar-compat android-actionbaractivity


【解决方案1】:

在 showasaction=never 所有菜单项中添加以下属性

android:orderInCategory="2"

就是这样..它将显示在溢出的人中.. 为您的场景更改我的示例代码,它在我的应用程序中运行良好

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

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

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

【讨论】:

  • 我试过你的回答,不幸的是,如果没有用于放置在操作栏上的图标的空间,它们将放置在选项菜单中,而不是如图所示的溢出图标内
  • 我正在 Galaxy Note3 上测试我的应用程序。你认为设备的版本可能重要吗?
  • 你添加了appCompact库吗?
  • 还有一件事在你的 mainActivity 类中用 ActionBarActivity 替换 Activity。然后检查....
  • 当我右键单击项目->属性->Android:有appcompat-V7被绿色标志选中。是你的意思吗?
【解决方案2】:

试试这个:

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

  <!-- Search / will display always -->
<item android:id="@+id/action_search"
      android:icon="@drawable/ic_action_search"
      android:title="action_search"
      android:orderInCategory="1"
      app:showAsAction="ifRoom"/>

<!-- Location Found -->
<item android:id="@+id/action_location_found"
    android:orderInCategory="2"
      android:icon="@drawable/ic_action_location_found"
      android:title="action_location_found"
      app:showAsAction="ifRoom" />

<!-- Refresh -->
<item android:id="@+id/action_refresh"
      android:icon="@drawable/ic_action_refresh"
      android:orderInCategory="3"
      android:title="action_refresh"
      app:showAsAction="ifRoom" />

<!-- Help -->
<item android:id="@+id/action_help"
      android:icon="@drawable/ic_launcher"
      android:orderInCategory="4"
      android:title="action_help"
      android:showAsAction="never"/>

<!-- Check updates -->
<item android:id="@+id/action_check_updates"
      android:icon="@drawable/ic_action_refresh"
      android:orderInCategory="5"
      android:title="action_check_updates"
      app:showAsAction="never" />

</menu>

【讨论】:

    猜你喜欢
    • 2012-03-18
    • 1970-01-01
    • 1970-01-01
    • 2019-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-16
    • 1970-01-01
    相关资源
    最近更新 更多