Android 如何在没有操作栏的情况下添加菜单按钮?
我想在我的应用程序右上角添加一个菜单按钮,而不添加操作栏,就像下面截图上的Google Fit应用程序一样。 有人能帮我吗Android 如何在没有操作栏的情况下添加菜单按钮?,android,android-menu,Android,Android Menu,我想在我的应用程序右上角添加一个菜单按钮,而不添加操作栏,就像下面截图上的Google Fit应用程序一样。 有人能帮我吗 您可以简单地使用弹出式菜单,例如,单击按钮时添加以下内容: public void showPopup(View v) { PopupMenu popup = new PopupMenu(this, v); MenuInflater inflater = popup.getMenuInflater(); inflater.inflate(R.menu
您可以简单地使用
弹出式菜单
,例如,单击按钮时添加以下内容:
public void showPopup(View v) {
PopupMenu popup = new PopupMenu(this, v);
MenuInflater inflater = popup.getMenuInflater();
inflater.inflate(R.menu.actions, popup.getMenu());
popup.show();
}
科特林
fun show弹出窗口(v:View){
val popup=PopupMenu(本,v)
val充气器:菜单充气器=弹出菜单充气器
充气机。充气(右菜单。动作,弹出菜单)
popup.setOnMenuItemClickListener{menuItem->
何时(menuItem.itemId){
R.id.action1->{
}
R.id.action2->{
}
}
真的
}
popup.show()
}
有关更多信息,请阅读创建弹出菜单的:
我认为你不能在没有操作栏的情况下添加菜单。但是,我可以考虑两种方法
创建与背景颜色相同的操作栏,使其不显示,然后添加菜单
只需在屏幕右上角添加一个按钮,然后将下拉列表放入布局中
或者使用@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>
不要将工具栏设置为操作栏。主题只是将其完全删除
<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" />
有关更多详细信息,请浏览:
我应该在哪里调用此方法?项单击侦听器可以这样添加:popup.setOnMenuItemClickListener(新建PopupMenu.OnMenuItemClickListener(){@Override public boolean onMenuItemClick(MenuItem项){开关(Item.getItemId()){case R.id.menuItem1:return true;default:return false;}}}});如果希望它位于屏幕右侧,请在将其充气之前使用popup.gravity=gravity.END
(默认情况下为我显示在左侧)@Quinn似乎在API级别23之前不受支持。但是,您可以将gravity作为构造函数参数传递:PopupMenu(this,v,gravity.End)
,这是受支持的。onMenuItemClick
不存在您在说什么?onMenuItemClick
到目前为止一直在工作。它有白色背景,不透明!
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" />
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;
}
}