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 如何使用自定义渲染器自定义选项卡