MAUI Tab的按下效果怎么去掉

思密达 100 信誉分
2025-01-08T07:33:11.5866667+00:00

Screenshot_2025-01-08-15-20-11-74_f6c881cf82c3885

下面灰色的按下效果,和上面长按出现的效果,怎么去掉。

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

接受的答案
  1. Leon Lu (Shanghai Wicresoft Co,.Ltd.) 79,546 信誉分 Microsoft 供应商
    2025-01-09T08:08:54.7+00:00

    你好,

    如果您想移除Shell tab点击时,出现的水波纹效果,你可以在 Platform/Android/ 文件夹下,创建一个自定义的Shellrenderer. 主要获取通过vgTab.SetBackgroundResource(Resource.Drawable.hideRipple); 获取每个tab, 设置我们自定义的background resouces.

    using Android.Content;
    using Android.Views;
    using Google.Android.Material.BottomNavigation;
    using Microsoft.Maui.Controls.Handlers.Compatibility;
    using Microsoft.Maui.Controls.Platform.Compatibility;
     
     
    namespace SplashScreenIssue.Platforms.Android
    {
        public class CustomShellRenderer : ShellRenderer
        {
            public CustomShellRenderer(Context context) : base(context)
            {
            }
     
            protected override IShellBottomNavViewAppearanceTracker CreateBottomNavViewAppearanceTracker(ShellItem shellItem)
            {
     
     
                return new MyCreateBottomNavViewAppearanceTracker();
            }
     
            
        }
     
        internal class MyCreateBottomNavViewAppearanceTracker : IShellBottomNavViewAppearanceTracker
        {
            public void Dispose()
            {
            }
     
            public void ResetAppearance(BottomNavigationView bottomView)
            {
            }
     
            public void SetAppearance(BottomNavigationView bottomView, IShellAppearanceElement appearance)
            {
                ViewGroup vg = (ViewGroup)bottomView.GetChildAt(0);
                int tabsCount = vg.ChildCount;
                for (int j = 0; j < tabsCount; j++)
                {
                    ViewGroup vgTab = (ViewGroup)vg.GetChildAt(j);
                    vgTab.SetBackgroundResource(Resource.Drawable.hideRipple);
                }
            }
        }
    }
    

    然后在Platform/Android/Resouces 文件夹下, 创建一个xml, 命名为hideRipple.xml, 注意hideRipple.xml的build action 是AndroidResouces. 以下是hideRipple.xml 中的代码。

    <?xml version="1.0" encoding="utf-8" ?>
    <shape xmlns:android="http://schemas.android.com/apk/res/android"
        android:shape="rectangle"  >
    <color android:startColor="@android:color/transparent"/>
    </shape>
    

    最后打开MauiProgram.cs, 去注册这个自定义的ShellRenderer.

     builder .ConfigureMauiHandlers((handlers) =>
                      {
    #if ANDROID
                          handlers.AddHandler(typeof(AppShell), typeof(yourporjectName.Platforms.Android.CustomShellRenderer));
     
    #endif
                      });
    

    如果答案是正确的,请点击“接受答案”并点赞。 如果您对此答案还有其他疑问,请点击“评论”。

    注意:如果您想接收相关电子邮件,请按照我们的文档中的步骤启用电子邮件通知 此线程的通知。

    0 个注释 无注释

0 个其他答案

排序依据: 非常有帮助

你的答案

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