【问题标题】:New Android Toolbar: How to hide the overflow menu icon?新的 Android 工具栏:如何隐藏溢出菜单图标?
【发布时间】:2015-02-08 17:07:10
【问题描述】:

我刚刚创建了一个应用程序,其中包括新的 Android 工具栏。我的问题是:如何隐藏这个溢出菜单图标/按钮:http://prntscr.com/62mmus? 我已经尝试过了,但它不起作用:

        Toolbar mToolbar = (Toolbar) findViewById(R.id.toolbar);
        mToolbar.hideOverflowMenu();

【问题讨论】:

  • “我如何隐藏这个溢出菜单图标/按钮”——不要在操作栏中放置任何操作项。删除您的 onCreateOptionsMenu()onOptionsItemSelected() 方法,以及它们使用的 menu 资源。然后,溢出不应该出现。

标签: android icons android-toolbar overflow-menu


【解决方案1】:

只需使用:

@Override
public boolean onPrepareOptionsMenu(Menu menu) {
        return false;
}

【讨论】:

  • 简直完美。谢谢。
  • 这也可以防止向上(后退)按钮对其点击事件做出反应。
  • 如果有任何导航抽屉,这将禁用汉堡包操作。只要不实现 onCreateOptionsMenu() 方法,溢出菜单就不会出现。
  • 如何在不返回任何内容的方法/函数上调用“return”?
【解决方案2】:

我就是这样做的。

这是我原来menu文件夹下的menu_main.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=".MainActivity">
    <item android:id="@+id/action_settings" android:title="@string/action_settings"
        android:orderInCategory="100" app:showAsAction="never" />
</menu>

删除项目:

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

转到您的主要活动并注释掉以下 if (id == R.id.action_settings) :

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();

    //noinspection SimplifiableIfStatement
   // if (id == R.id.action_settings) {
   //     return true;
   // }

    return super.onOptionsItemSelected(item);
}

运行您的应用 - 溢出菜单图标消失了。

【讨论】:

    【解决方案3】:

    对我有用的是: 添加以下内容: android:visible="false" 到菜单文件夹中的菜单文件(global.xml)中的菜单项。

    例如:

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

    【讨论】:

      【解决方案4】:

      调用方法onCreateOptionsMenu

      时只返回false

      例如:

      @Override
      public boolean onCreateOptionsMenu(Menu menu) {
          if (!showToolbarMenu)
              return false;
          getMenuInflater().inflate(R.menu.main_activity, menu);
          return super.onCreateOptionsMenu(menu);
      }
      

      【讨论】:

      • 如果你在onCreateOptionsMenu()开头返回false,你会在那里添加项目吗?
      【解决方案5】:

      使用命令 invalidateOptionsMenu();

      你的问题就会迎刃而解。

      【讨论】:

      • 请考虑添加更多详细信息,说明为什么这是正确答案。
      • 如果当前片段和活动都没有覆盖 onCreateOptionsMenu,这会起作用,因为它会强制系统再次尝试膨胀菜单。找不到要显示的菜单,它将隐藏图标。
      【解决方案6】:

      这对我有用,我刚刚删除了行 getMenuInflater().inflate(R.menu.main_activity, menu);

      【讨论】:

        【解决方案7】:

        不要实现onCreateOptionsMenu(Menu menu) 方法。如果你仍然这样做,请不要使用此方法getMenuInflater().inflate(R.menu.main, menu);,因为onCreateOptionsMenu 方法中的这一行使用资源R.menu.main 中声明的菜单来膨胀溢出按钮。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2015-12-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-02-22
          • 2018-05-28
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多