Я хочу добавить кнопку меню в правый верхний угол моего приложения и без панели действий, например, в приложении Google Fit на скриншоте ниже. Кто-нибудь может мне помочь?
Я хочу добавить кнопку меню в правый верхний угол моего приложения и без панели действий, например, в приложении Google Fit на скриншоте ниже. Кто-нибудь может мне помочь?
Вы можете просто использовать 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
Добавьте панель инструментов в макет и сделайте его прозрачным. Это лучшее решение для добавления пунктов меню в макет, при этом внешний вид панели действий/панели инструментов отсутствует.
Разметка
<?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;
}
});
Не устанавливайте панель инструментов в качестве панели действий. Тема просто полностью удаляет его.
Я не думаю, что вы можете добавить меню без панели действий. Но есть два подхода, которые я могу придумать.
Панель создания и действия того же цвета, что и фон, чтобы он не отображался, затем добавьте меню.
Просто добавьте кнопку в верхнем правом углу экрана и поместите выпадающее меню в макет.
Или используйте всплывающее меню, предложенное @M-Y
<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