NET MAUI 8.0 FlyoutIcon NOT WORK ON ANDROID(windows正常显示/android不显示)

张中伟 20 信誉分
2024-10-18T07:39:17.6366667+00:00

我使用vs2022 net maui8.0 程序。FlyoutIcon图标在windows正常显示,但是android显示为空白或者不显示, 为什么??代码如下:

Shell.FlyoutBehavior="Flyout"

FlyoutIcon="bb.png"

Title="mTest">

<ItemGroup>

	<MauiImage Include="Resources\Images\bb.png" />

</ItemGroup>
.NET MAUI
.NET MAUI
一种 Microsoft 开源框架,用于构建跨移动设备、平板电脑、台式机的原生设备应用程序。
94 个问题
0 个注释 无注释
{count} 票

接受的答案
  1. Leon Lu (Shanghai Wicresoft Co,.Ltd.) 77,726 信誉分 Microsoft 供应商
    2024-10-22T01:29:03.9833333+00:00

    你好,

    出现这个现象的原因是Android默认有个白色的蒙板在FlyoutIcon 上面。

    您可以在 yourproject/Platforms/Android 文件夹下创建一下ShellRenderer, 然后覆盖CreateToolbarAppearanceTracker 方法,然后创建一个类继承ShellToolbarAppearanceTracker,在SetColors 方法中设置 toolbarTracker.TintColor = Colors.Transparent;.

    namespace MauiApp9.Platforms.Android
    {
      public  class CustomShellHandler : ShellRenderer
        {
            protected override IShellToolbarAppearanceTracker CreateToolbarAppearanceTracker()
            {
                return new CustomShellToolbarAppearanceTracker(this);
            }
        }
     
     
        public class CustomShellToolbarAppearanceTracker : ShellToolbarAppearanceTracker
        {
            public CustomShellToolbarAppearanceTracker(IShellContext shellContext) : base(shellContext)
            {
            }
            protected override void SetColors(AndroidX.AppCompat.Widget.Toolbar toolbar, IShellToolbarTracker toolbarTracker, Microsoft.Maui.Graphics.Color foreground, Microsoft.Maui.Graphics.Color background, Microsoft.Maui.Graphics.Color title)
            {
                toolbarTracker.TintColor = Colors.Transparent;
                base.SetColors(toolbar, toolbarTracker, foreground, background, title);
            }
    
        }
    

    最后别忘了在,MauiProgram.cs 中注册这个CustomShellHandler

    public static class MauiProgram
        {
            public static MauiApp CreateMauiApp()
            {
                var builder = MauiApp.CreateBuilder();
                builder
                    .UseMauiApp<App>().UseMauiCommunityToolkit()
    
                    .ConfigureMauiHandlers(handlers =>
                    {
    #if ANDROID
                        handlers.AddHandler<Shell, MauiApp9.Platforms.Android.CustomShellHandler>();
    #endif
                    })
    

     


    如果答案是正确的,请点击“接受答案”并点赞。 如果您对此答案还有其他疑问,请点击“评论”。 注意:如果您想接收相关电子邮件,请按照我们的文档中的步骤启用电子邮件通知 此线程的通知。

    1 个人认为此答案很有帮助。

0 个其他答案

排序依据: 非常有帮助

你的答案

问题作者可以将答案标记为“接受的答案”,这有助于用户了解已解决作者问题的答案。