web-dev-qa-db-ja.com

アクションバーなしでメニューボタンを追加するには?

下のスクリーンショットのGoogle Fitアプリにあるように、メニューボタンをアプリの右上隅にアクションバーなしで追加したいと思います。誰も私を助けることができますか?

menu button without action bar

31
dzikovskyy

単に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

49
M-Y

ツールバーにレイアウトを追加し、それを透明にします。これは、アクションバー/ツールバーがない外観を提供しながら、レイアウトにメニュー項目を追加するための最適なソリューションです。

レイアウト

<?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;
    }
});

アクションバーとツールバーを設定しないでください。テーマはちょうど完全にそれを削除します。

17
Eugene H
<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

5
Aashish

アクションバーなしでメニューを追加できるとは思わない。しかし、私が考えることができる2つのアプローチがあります。

  1. 表示されないように、背景と同じ色のアクションバーを作成して、次にメニューを追加します。

  2. 画面の右上隅にボタンを追加し、レイアウトにドロップダウンを配置するだけです。

または、@ M-Yが提案するポップアップメニューを使用します

1
user2520215