【发布时间】:2021-05-26 13:35:46
【问题描述】:
我正在使用 Xamarin Android 开发我的应用程序,但我遇到了菜单项问题。 更新 Android 库时出现问题 - 所有旧版支持现在都在 AndroidX 库中,因此我将整个项目迁移到它并发生了以下情况。
关闭我的应用程序的用户应该能够登录。登录和注册按钮后隐藏和注销按钮显示。这很好,但我发现这只是因为弹出登录/注册对话框,它以某种方式强制菜单在对话框关闭时重绘。问题是当用户注销时,分别应该登录和注册按钮显示和注销按钮隐藏,但只有注销隐藏,其他按钮不显示。只有在单击菜单中的某些内容后,它才会重绘自身并显示按钮。
全部显示在屏幕截图中。
after logout - buttons not shown
我是如何操作按钮的:
private void SetupGuiAfterSignIn()
{
if (!User.IsSignIn())
return;
var navheadr = navigationView.GetHeaderView(0).FindViewById<LinearLayout>(Resource.Id.navheader);
navheadr.Visibility = ViewStates.Visible;
var navheaderUsername = navigationView.GetHeaderView(0).FindViewById<TextView>(Resource.Id.navheader_username);
navheaderUsername.Text = User.GetEmail();
navigationView.Menu.FindItem(Resource.Id.nav_login).SetVisible(false);
navigationView.Menu.FindItem(Resource.Id.nav_register).SetVisible(false);
navigationView.Menu.FindItem(Resource.Id.nav_logout).SetVisible(true);
navigationView.Menu.FindItem(Resource.Id.nav_find_users).SetVisible(true);
InvalidateOptionsMenu();
}
private void SetupGuiAfterLogout()
{
if (User.IsSignIn())
return;
var navheadr = navigationView.GetHeaderView(0).FindViewById<LinearLayout>(Resource.Id.navheader);
navheadr.Visibility = ViewStates.Gone;
navigationView.Menu.FindItem(Resource.Id.nav_login).SetVisible(true);
navigationView.Menu.FindItem(Resource.Id.nav_register).SetVisible(true);
navigationView.Menu.FindItem(Resource.Id.nav_logout).SetVisible(false);
navigationView.Menu.FindItem(Resource.Id.nav_find_users).SetVisible(false);
InvalidateOptionsMenu();
}
我也有 OnCreateOptionsMenu:
public override bool OnCreateOptionsMenu(IMenu menu)
{
navigationView.InflateMenu(Resource.Menu.menu); //Navigation Drawer Layout Menu Creation
navigationView.InflateHeaderView(Resource.Menu.NavMenuHeader);
base.OnCreateOptionsMenu(menu);
return true;
}
【问题讨论】:
标签: c# android xamarin xamarin.android