Xamarin Shell android 使用 xml 标记进行自定义

Posted

技术标签:

【中文标题】Xamarin Shell android 使用 xml 标记进行自定义【英文标题】:Xamarin Shell android customize with xml markup 【发布时间】:2021-05-03 10:24:53 【问题描述】:

我已经定义了自定义底部视图以在 android 项目中制作自定义标签栏外壳。 为此,我创建了一个新的渲染器和一个新的 xml 文件来定义图形。 但是有一个问题,我有margin,但是底视图下的背景是黑色的,我不知道如何编辑这个颜色。

这是我的代码:

public class MyShellBottomNavViewAppearanceTracker : IShellBottomNavViewAppearanceTracker

    public void SetAppearance(BottomNavigationView bottomView, IShellAppearanceElement appearance)
                
        bottomView.SetBackgroundResource(Resource.Drawable.bottomBack);                                  

        if (bottomView.LayoutParameters is LinearLayout.LayoutParams layoutParams)
        
            layoutParams.SetMargins(30, 0, 30, 0);
            bottomView.LayoutParameters = layoutParams;
        
    

这是我的 shell xml:

<?xml version="1.0" encoding="utf-8" ?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
  <solid android:color="#fff555" />
  
  <corners android:topLeftRadius="15dp"
     android:topRightRadius="15dp"
           android:bottomLeftRadius="15dp"
     android:bottomRightRadius="15dp"
  />
  <padding android:top="5dp" android:bottom="5dp"/>
  
</shape>

结果显示背景为灰色,外壳为黄色,背景为黑色,但对于最后一个我不知道如何编辑(将灰色作为视图的其余部分)。

Screen about background tab bar is black and not gray as rest of the view

如何指定标签栏背景(超出边距)?

【问题讨论】:

这能回答你的问题吗? Shell TabBar rounded corners override default background color (View) behind 【参考方案1】:

您可以尝试获取bottomView的Parent,然后将其背景颜色设置为灰色。

 public void SetAppearance(BottomNavigationView bottomView, IShellAppearanceElement appearance)
    
       
        bottomView.SetBackgroundResource(Resource.Drawable.bottombackground);
        Android.Views.View view = (Android.Views.View)bottomView.Parent;
        view.SetBackgroundColor(Android.Graphics.Color.Gray);
        if (bottomView.LayoutParameters is LinearLayout.LayoutParams layoutParams)
        
            layoutParams.SetMargins(30, 0, 30, 0);
            bottomView.LayoutParameters = layoutParams;
        
    

【讨论】:

以上是关于Xamarin Shell android 使用 xml 标记进行自定义的主要内容,如果未能解决你的问题,请参考以下文章

Xamarin.FormsShell基础教程Shell项目构成

Xamarin.Forms 选中时禁用 Shell TabBar 字体缩放

使用 Xamarin.Forms Shell 时主选项卡是不是可以显示在顶部

Xamarin Forms Shell 如何使用自定义渲染器自定义选项卡

Xamarin挖墙脚系列:Android最重要的命令工具ADB

Xamarin.Forms.Shell:如何获取底部 TabBar 高度?