我在我的布局中包含了一个v7工具栏.
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@android:color/white"
/>
Run Code Online (Sandbox Code Playgroud)
我正在使用以下内容向其中填充菜单:
mToolbar.inflateMenu(R.menu.options_add_contact);
Run Code Online (Sandbox Code Playgroud)
现在我怎么知道删除/重置它?我在黑暗中试了几次:
mToolbar.inflateMenu(0)moolbar.setMenu(null, null)toolbar.setMenu(null, null)我正在使用new NavigationView从XML创建我的导航抽屉菜单.我需要在部分菜单项之间放置一个分隔符,它在我的应用程序各部分之间切换,以及底部的设置和帮助和支持链接.
在我看过的所有例子中,我看到如何通过将另一个放入<menu>一个<item>,但<item>需要具有android:title属性来完成,所以我能做的最好就是将标题留空,这在设置之前留下一个空的空格并提供帮助和反馈.
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<group android:checkableBehavior="single">
<item
android:id="@+id/nav_section_1"
android:icon="@drawable/ic_dashboard"
android:title="@string/section_1"
android:checked="true" /> <!-- default selection -->
<item
android:id="@+id/nav_section_2"
android:icon="@drawable/ic_dashboard"
android:title="@string/section_2" />
<item
android:id="@+id/nav_section_3"
android:icon="@drawable/ic_dashboard"
android:title="@string/section_3" />
</group>
<item android:title="@null"> <!-- I don't want a title or space here! -->
<menu>
<item
android:id="@+id/nav_settings"
android:icon="@drawable/ic_settings"
android:title="@string/settings" />
<item
android:id="@+id/nav_help_feedback"
android:icon="@drawable/ic_help"
android:title="@string/help_feedback" />
</menu>
</item>
</menu>
Run Code Online (Sandbox Code Playgroud)
我已经试过的各种组合<menu>,<item>以及<group>标签,但没有发现任何东西,将工作.例如,这具有使用上一组中的最后一项作为组标题的问题:
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<group android:checkableBehavior="single">
<item
android:id="@+id/nav_section_1"
android:icon="@drawable/ic_dashboard"
android:title="@string/section_1"
android:checked="true" /> …Run Code Online (Sandbox Code Playgroud) <android.support.design.widget.NavigationView
android:id="@+id/drawer_nav"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
android:theme="@style/Theme.AppCompat.Light.NoActionBar"
app:headerLayout="@layout/drawer_header"
app:menu="@menu/menu_drawer"
/>
Run Code Online (Sandbox Code Playgroud)
我android.support.design.library用于材料设计.
我想要的是在用户未登录时隐藏一些菜单项.
现在我无法获取菜单项NavigationView.
我试过了:
MenuItem logoutItem = (MenuItem) mNavigationView.findViewById(R.id.menu_logout);
logoutItem.setVisible(false);
Run Code Online (Sandbox Code Playgroud)
但它不起作用.
我怎样才能做到这一点?
谢谢.
android android-menu android-support-library android-design-library android-navigationview

如何在android工具栏中设置后退箭头并应用单击监听器?
我一直在搜索invalidateOptionsMenu(),我知道它的作用.但我想不出这个方法可能有用的任何现实生活中的例子.
我的意思是,例如,假设我们想要为我们添加一个新MenuItem的ActionBar,我们可以简单地从菜单中获取onCreateOptionsMenu(Menu menu)并在任何按钮的操作中使用它.
现在我真正的问题是,遵循唯一的使用方式invalidateOptionsMenu()?
bool _OtherMenu;
protected override void OnCreate (Bundle bundle)
{
_OtherMenu = false;
base.OnCreate (bundle);
SetContentView (Resource.Layout.Main);
Button button = FindViewById<Button> (Resource.Id.myButton);
button.Click += delegate
{
if(_OtherMenu)
_OtherMenu = false;
else
_OtherMenu = true;
InvalidateOptionsMenu ();
};
}
public override bool OnCreateOptionsMenu (IMenu menu)
{
var inflater = this.SupportMenuInflater;
if(_OtherMenu)
inflater.Inflate (Resource.Menu.another_menu, menu);
else
inflater.Inflate (Resource.Menu.main_activity_menu, menu);
return base.OnCreateOptionsMenu (menu);
}
Run Code Online (Sandbox Code Playgroud)
单击按钮,将出现另一个菜单.再次单击该按钮,将出现上一个菜单.
PS对不起C#语法.
android android-menu android-optionsmenu android-actionbar xamarin
我想在我的应用的右上角添加一个菜单按钮,而不使用操作栏,就像在下面的屏幕截图中的Google Fit应用中一样.谁能帮我?

我无法理解为什么错误和不兼容(AndroidStudio告诉我"应该使用app:showAsAction与appcompat库)代码
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:id="@+id/action_search"
android:title="@string/action_search"
android:icon="@drawable/search"
android:showAsAction="always" />
</menu>
Run Code Online (Sandbox Code Playgroud)
工作完美,但适当和兼容的版本
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" >
<item android:id="@+id/action_search"
android:title="@string/action_search"
android:icon="@drawable/search"
app:showAsAction="always" />
</menu>
Run Code Online (Sandbox Code Playgroud)
根本没有显示我的图标.
我正在测试Samsung GT P5210(android v.4.4.2)和Nexus 7(4.4.4)
快照-1:单击菜单中的附件按钮之前

快照-2:单击菜单中的附件按钮

我正在使用android studio 3.1进行一些开发.但它没有android在Tools菜单下显示选项.而Android studio 3.0没有这个问题.
这是android studio 3.1工具菜单的截图:
看到缺少android选项.我认为这是一些配置相关的问题,因为它在android studio 3.0中不存在.基本上我需要Enable ADB Integration选择.有没有办法在工具菜单中显示该选项?
有些用户告诉我有关的异常:
java.lang.IllegalArgumentException: Invalid payload item type
at android.util.EventLog.writeEvent(Native Method)
at android.app.Activity.onMenuItemSelected(Activity.java:2452)
at com.android.internal.policy.impl.PhoneWindow.onMenuItemSelected(PhoneWindow.java:846)
at com.android.internal.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:153)
at com.android.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:956)
at com.android.internal.view.menu.IconMenuView.invokeItem(IconMenuView.java:534)
at com.android.internal.view.menu.IconMenuItemView.performClick(IconMenuItemView.java:122)
at android.view.View$PerformClick.run(View.java:11934)
at android.os.Handler.handleCallback(Handler.java:587)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:132)
at android.app.ActivityThread.main(ActivityThread.java:4123)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:491)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599)
at dalvik.system.NativeStart.main(Native Method)
Run Code Online (Sandbox Code Playgroud)
但我无法理解什么是错的.有没有人对这个问题有一些想法?我试图重复那个例外,但我没有做到这一点.这是代码
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.app_menu, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.about:
startActivity(new Intent(this, AboutActivity.class));
return true;
case R.id.settings:
startActivity(new Intent(this, SettingsActivity.class)); …Run Code Online (Sandbox Code Playgroud) android illegalargumentexception android-menu android-optionsmenu