更改主详细信息导航xamarin表单中的汉堡图标

2023-11-25

我正在处理 Xamarin 表单,我需要在成功登录屏幕后显示主详细信息导航。我想更改默认的汉堡包图标,但无法更改它。

请参阅下面我正在使用的代码。

由于我的应用程序有登录屏幕,因此我不想在登录屏幕上显示任何导航。我只是将主页设置为app.xaml.cs

public App()
{
    InitializeComponent();

    MainPage = new Login();
}

现在登录后单击我尝试以下方法来更改图标但没有用

var dashboard = new Dashboard(){Icon = "Menuicon.png" };
Application.Current.MainPage = dashboard;

Dashbaord是 masterdetail 页面,在其 ctor 上,我设置详细信息页面,如下所示

Detail = new NavigationPage((Page)Activator.CreateInstance(typeof(DashbaordDetail))) { Icon = "Menuicon.png" };

它没有反映新图标


您应该使用自定义渲染器。

在你的 Android 项目中,像这样:

[assembly: ExportRenderer(typeof(CustomIcon.Views.MainPage), typeof(IconNavigationPageRenderer))]
namespace CustomIcon.Droid
{
    public class IconNavigationPageRenderer : MasterDetailPageRenderer
    {
        private static Android.Support.V7.Widget.Toolbar GetToolbar() => (CrossCurrentActivity.Current?.Activity as MainActivity)?.FindViewById<Android.Support.V7.Widget.Toolbar>(Resource.Id.toolbar);

        protected override void OnLayout(bool changed, int l, int t, int r, int b)
        {
            base.OnLayout(changed, l, t, r, b);
            var toolbar = GetToolbar();
            if (toolbar != null)
            {
                for (var i = 0; i < toolbar.ChildCount; i++)
                {
                    var imageButton = toolbar.GetChildAt(i) as ImageButton;

                    var drawerArrow = imageButton?.Drawable as DrawerArrowDrawable; 
                    if (drawerArrow == null)
                        continue;

                    imageButton.SetImageDrawable(Forms.Context.GetDrawable(Resource.Drawable.newIcon));
                }
            }
        }
    }
}

在您的 iOS 项目中,仅使用 PCL 项目中 xaml 文件中的相同图标,如下所示:

<?xml version="1.0" encoding="utf-8" ?>
<MasterDetailPage  xmlns="http://xamarin.com/schemas/2014/forms"
         xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
         xmlns:local="clr-namespace:CustomIcon.Views;assembly=CustomIcon"
         Title="MainPage"
         Icon="newIcon.png"
         x:Class="CustomIcon.Views.MainPage">
<MasterDetailPage.Master>
    <local:MasterPage x:Name="masterPage" />
</MasterDetailPage.Master>
<MasterDetailPage.Detail>
    <NavigationPage>
        <x:Arguments>
            <local:Page1 />
        </x:Arguments>
    </NavigationPage>
</MasterDetailPage.Detail>

有关更多信息,请参阅我在 github 上的存储库:https://github.com/wilsonvargas/CustomIconNavigationPage

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

更改主详细信息导航xamarin表单中的汉堡图标 的相关文章

随机推荐

  • C 中的非 void 函数不返回任何内容

    以下代码片段中的最佳实践是什么 int foo struct data bar struct info bla if bar bla gt status 0 return 事实上 它工作得很好 但我感觉不舒服gcc给我一个警告 这是实际的代
  • 如何使用 UIApplicationDelegateAdaptor 作为 ObservableObject?

    在我的 iOS 14 中App 我可以登记遗产AppDelegate通过做这个 main struct MyApp App if os iOS UIApplicationDelegateAdaptor AppDelegate self va
  • Python如何从文件中读取原始二进制文件? (音频/视频/文字)

    我想读取文件的原始二进制文件并将其放入字符串中 目前 我正在打开一个带有 rb 标志的文件并打印字节 但它显示为 ASCII 字符 对于文本 即视频和音频文件 它给出符号和乱码 如果可能的话 我想得到原始的 0 和 1 这也需要适用于音频和
  • Delphi函数像Windows一样显示字节数

    这是一个简单的问题 我认为 是否有一个系统内置函数 或者某人创建的可以从 Delphi 调用的函数 它将显示多个字节 例如文件大小 就像 Windows 在文件属性框中显示的方式一样 例如这是 Windows 属性框显示各种尺寸的方式 53
  • .Net 数组的 LongLength 的目的是什么?

    Net 中数组的 LongLength 属性的用途是什么 使用标准整数作为长度 最多可以容纳 20 亿个索引 真的有人使用 Net 来维护包含超过 20 亿个元素的单个数组吗 即使每个元素都是一个字节 那仍然是 2 GB 的数据 在 Net
  • 错误:加载块 0 失败。 - webpack 尝试加载 0.js

    我有以下项目结构 mainFile js scripts Library1 js Library2 js 库文件使用requirejsdefine function syntax 因此 我将其放入 webpack config js 中 m
  • 如何从 json 创建表列和字段? (动态网格)

    我有一个 json 文件 我假设我对内容一无所知 我不知道型号 然而 json 文件中给出了模型 数据和有关网格的其他信息 我将如何以这种方式创建列等 Stackoverflow 上充斥着与此非常相似的问题 我研究了所有这些 但没有找到明确
  • java7 / Rhino 中编译和解释的 javascript 的性能

    我对 Java7 中的 Rhino javascript 引擎的性能有一个问题 很快 我的脚本 解析和编译文本 在 Chrome 中的运行速度比 Java7 Rhino 脚本引擎中的运行速度大约快 50 100 倍 我试图找到改善这种情况的
  • Spring Security:抛出 LockedException 而不是 BadCredentialsException,为什么?

    使用 Spring Security 4 0 2 RELEASE 对于使用 spring security 框架的基本用户身份验证 我实现了 spring securityDaoAuthenticationProvider 当用户尝试使用正
  • 通过进度条显示执行进度

    我有一个愚蠢的问题 但我被困住了 我正在从我的代码中执行存储过程 过程需要时间 因此我显示一个进度条 它显示执行的进度 但是存储过程执行并且没有任何内容可以增加进度条的值 这是我的代码 void btnYes Click object se
  • 如何使用 ReSharper 创建 NUnit 测试?

    我正在尝试使用 C 进行单元测试 很多人告诉我使用 NUnit 因为它比 MSTest 更好 显然 我不知道 而且它在我正在使用的 ReSharper 中也有很好的支持 现在我以前从未编写过单元测试 请耐心等待 我是一名大学生 ReShar
  • 无法在“ServiceWorker”上执行“postMessage”:无法克隆函数

    我正在尝试向服务工作者实例发布消息 我收到以下错误 无法在 ServiceWorker 上执行 postMessage function obj removeListener ev fn 无法克隆 我的代码如下 var socket io
  • GKE Nginx Ingress Controller 前面的全局负载均衡器(HTTPS 负载均衡器)

    我有一个 GKE 集群 它使用 Nginx Ingress Controller 作为其入口引擎 目前 当我设置 Nginx Ingress Controller 时 我定义了一个服务kind LoadBalancer并将其指向先前在 GC
  • 对 RGB 图像使用特征数组数组

    我正在尝试使用 Eigen 库进行一些简单的图像处理 我将使用 Array3f 作为 RGB 三元组 并使用 Array 来保存 RGB 图像 这似乎部分有效 我可以方便地对图像进行组件式加法 乘法和除法 但某些操作 特别是涉及减法或求反
  • 是否可以为 python 创建嵌套虚拟环境?

    在处理一些自动化脚本时 我发现需要有一些可用于所有脚本的通用包 例如ipython and spyder 并仅安装每个脚本的差异包 我们称之为差异包 有没有办法在Python中嵌套虚拟环境 也就是说 通过某种方式设置环境 以便 python
  • 如何在C++中使用clock()

    我怎么打电话clock in C 例如 我想测试线性搜索在数组中查找给定元素需要多长时间 include
  • Typescript 将所有日期从接口转换为字符串

    是否可以全部改造Date类型定义从我的接口到string 因为它会自动转换为string关于 JSON 字符串化 interface Item key string value number created Date const item
  • 如何上传JAR到Nexus OSS 3?

    如何通过以下方式执行 jar 的上传curlNexus 3 我尝试使用链接提示但没有成功 这是我的尝试 curl v F r F releases hasPom true and F jar F file v12 1 0 1 pom xml
  • 查找已调用弹出菜单的 JTable 行

    我有一个 JTable 和一个特定于每一行的弹出菜单 我想计算用户右键单击鼠标 Windows L F 以调出弹出菜单的行 我为表创建了一个 MouseListener 因此它可以在单击时获取 MouseEvent 并在正确的位置显示弹出菜
  • 更改主详细信息导航xamarin表单中的汉堡图标

    我正在处理 Xamarin 表单 我需要在成功登录屏幕后显示主详细信息导航 我想更改默认的汉堡包图标 但无法更改它 请参阅下面我正在使用的代码 由于我的应用程序有登录屏幕 因此我不想在登录屏幕上显示任何导航 我只是将主页设置为app xam