下のスクリーンショットの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;
}
});
アクションバーとツールバーを設定しないでください。テーマはちょうど完全にそれを削除します。
<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
アクションバーなしでメニューを追加できるとは思わない。しかし、私が考えることができる2つのアプローチがあります。
表示されないように、背景と同じ色のアクションバーを作成して、次にメニューを追加します。
画面の右上隅にボタンを追加し、レイアウトにドロップダウンを配置するだけです。
または、@ M-Yが提案するポップアップメニューを使用します