如何添加没有操作栏的菜单按钮?

时间:2015-05-23 20:23:36

标签: android android-menu

我想在我的应用的右上角添加一个菜单按钮,而不使用操作栏,就像在下面的屏幕截图中的Google Fit应用中一样。 任何人都可以帮助我吗?

menu button without action bar

4 个答案:

答案 0 :(得分:43)

您可以简单地使用PopupMenu,例如在点击时将以下内容添加到按钮中:

public void showPopup(View v) {
    PopupMenu popup = new PopupMenu(this, v);
    MenuInflater inflater = popup.getMenuInflater();
    inflater.inflate(R.menu.actions, popup.getMenu());
    popup.show();
}

有关详细信息,请阅读Creating a Popup Menuhttp://developer.android.com/guide/topics/ui/menus.html

答案 1 :(得分:18)

添加工具栏布局并使其透明。这是将菜单项添加到布局的最佳解决方案,同时给出外观没有操作栏/工具栏。

<强>布局

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

    <!-- The rest of your code here -->

    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="56dp"
        android:background="@android:color/transparent"/>

</RelativeLayout>

<强>主题

<resources>
    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <!-- Customize your theme here. -->
    </style>
</resources>

充气菜单,设置标题,菜单点击监听器的示例。

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
toolbar.setTitle("Toolbar");
toolbar.inflateMenu(R.menu.menu_main);
toolbar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() {
    @Override
    public boolean onMenuItemClick(MenuItem item) {
        if (item.getItemId() == R.id.action_refresh) {

        }
        return false;
    }
});

不要将工具栏设置为操作栏。主题只是完全删除它。

答案 2 :(得分:3)

<ImageButton
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@drawable/ic_overflow_holo_dark"
    android:contentDescription="@string/descr_overflow_button"
    android:onClick="showPopup" />

在xml文件中添加要显示此菜单的上述行。

public void showMenu(View v) {

    PopupMenu popup = new PopupMenu(this, v);
    // This activity implements OnMenuItemClickListener
    popup.setOnMenuItemClickListener(this);
    popup.inflate(R.menu.actions);
    popup.show();
}

@Override
public boolean onMenuItemClick(MenuItem item) {

    switch (item.getItemId()) {
        case R.id.archive:
            archive(item);
            return true;
        case R.id.delete:
            delete(item);
            return true;
        default:
            return false;
    }
}

详情请见: https://developer.android.com/guide/topics/ui/menus.html

答案 3 :(得分:1)

我不认为你可以添加没有操作栏的菜单。但是,我可以考虑两种方法。

  1. 与背景颜色相同的创建和操作栏,以便它不显示,然后添加菜单。

  2. 只需在屏幕右上角添加一个按钮,然后将下拉菜单放在布局中。

  3. 或使用@ M-Y建议的弹出菜单