如何删除下拉操作按钮溢出?

How can I remove dropdown actionbutton overflow?

我正在尝试从 Action Bar 中删除下拉菜单 ActionButton Overflow。在这种情况下,它将是具有 3 个点和默认选项 "Settings" 的选项。我想删除此项目 "Settings",这样,通过单击菜单图标,他必须采取行动自动地。有什么想法吗?

您无法摆脱溢出。您可以要求操作栏考虑将一个(或多个)操作栏项目设为操作栏中的工具栏样式按钮。为此:

  • 如果您使用的是原生操作栏,请将 android:showAsAction="ifRoom" 添加到菜单资源中的 <item>

  • 如果您正在使用 appcompat-v7 操作栏向后移植,请将 app:showAsAction="ifRoom" 添加到菜单资源中的 <item>(假设您有 appcompat-v7 命名空间设置为 app)

但是,是否将项目显示为工具栏按钮或将其放在溢出中取决于操作栏,而不是您。例如,如果您要求 8 个项目都成为工具栏按钮,虽然这在 10" 平板电脑的横屏上可能是可行的,但在 phone 大小的竖屏上就没有足够的空间容纳所有这些按钮.您的一些项目将是工具栏按钮;其余的将进入溢出。

您必须删除所有创建菜单的方法(onCreateOptionsMenu 等)。

然后在工具栏的 XML 文件中,您必须在工具栏中添加一个自定义图标。例如:

<android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        android:background="?attr/colorPrimary"
        app:popupTheme="@style/ThemeOverlay.AppCompat.Light">

        <----YOUR CUSTOM ICON/BUTTON HERE---->

</android.support.v7.widget.Toolbar>

然后您可以通过编程方式在自定义 icon/button 上添加一个 onClickListener 然后您可以用它做任何您想做的事。

转到文件夹菜单->主菜单,然后删除项目设置,然后您可以添加另一个项目(例如)

<item
        android:id="@+id/action_refresh"
        android:orderInCategory="100"
        android:showAsAction="ifRoom"
        android:title="@string/action_refresh"
        android:icon="@drawable/refresh">
    </item>

在你的 activity:

onOptionsItemSelected(MenuItem item) // write your switch case to handle the clicked item.

允许选项直接在操作栏上的行是:

android:showAsAction="ifRoom"

菜单在 onCreateOptionsMenu 方法中膨胀,并使用菜单文件夹(默认)中的菜单 XML 来检索项目。如果您想在键码菜单上执行操作,可以使用以下

@Override
    public boolean onKeyDown(int keycode, KeyEvent e) {
        switch(keycode) {
            case KeyEvent.KEYCODE_MENU:
                Toast.makeText(getApplicationContext(), "Menu Pressed", Toast.LENGTH_LONG).show();
                return true;
        }

        return super.onKeyDown(keycode, e);
    }

如果您对菜单项没有用,您也可以继续摆脱 onCreateOptionsMenu 和 onOptionsItemSelected 方法,以及菜单 XML,不过这取决于您