Подтвердить что ты не робот

Как добавить кнопку меню без панели действий?

Я хочу добавить кнопку меню в правый верхний угол моего приложения и без панели действий, например, в приложении Google Fit на скриншоте ниже. Кто-нибудь может мне помочь?

menu button without action bar

4b9b3361

Ответ 1

Вы можете просто использовать 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 Menu: http://developer.android.com/guide/topics/ui/menus.html

Ответ 2

Добавьте панель инструментов в макет и сделайте его прозрачным. Это лучшее решение для добавления пунктов меню в макет, при этом внешний вид панели действий/панели инструментов отсутствует.

Разметка

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

Не устанавливайте панель инструментов в качестве панели действий. Тема просто полностью удаляет его.

Ответ 3

Я не думаю, что вы можете добавить меню без панели действий. Но есть два подхода, которые я могу придумать.

  • Панель создания и действия того же цвета, что и фон, чтобы он не отображался, затем добавьте меню.

  • Просто добавьте кнопку в верхнем правом углу экрана и поместите выпадающее меню в макет.

Или используйте всплывающее меню, предложенное @M-Y

Ответ 4

<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