【问题标题】:Custom TitleView (top bar) in Xamarin.Forms Shell pageXamarin.Forms Shell 页面中的自定义 TitleView(顶部栏)
【发布时间】:2021-06-14 03:20:48
【问题描述】:

我正在尝试创建自定义 TitleView(Shell 页面的顶部栏,汉堡图标菜单所在的位置)。现在,在设计中,我在该区域有一些元素——通知铃、信息按钮和带有名称的用户图像。但是,作为 xamarin.forms 的 Xamarin.Forms 不允许轻松覆盖此元素。

我将如何为它创建一个自定义控制器?我可以为条目、标签、文本编辑器等执行此操作,但我尝试过的任何方法都不适用于 TitleView。

以下是当前状态的图像(我什至无法更改汉堡图标的颜色,每个 png 都是白色的哈哈)

以及我希望实现的目标:

我非常感谢有关如何创建此自定义渲染器的任何指示和解释。谢谢大家!

【问题讨论】:

  • 似乎有点宽泛,请说明您的最终目标。您尝试过“覆盖 Shell.TitleView”这是什么意思?您是否要定义一个全局 TitleView?

标签: c# android ios xaml xamarin.forms


【解决方案1】:
当您想要更改/覆盖元素的行为方式时,建议使用

自定义控制器。您需要做的是自定义 标题视图,您可以像自定义视图中的内容一样轻松定义该元素。

您需要做的就是:

<!-- YOUR XAML -->
<NavigationPage.TitleView>
   <Grid>
      <!-- YOUR CONTENT -->
   </Grid>
</NavigationPage.TitleView>

我想说的是,您可以严格控制导航栏的高度,您需要遵守一些限制。

如果您需要某种模板来在多个地方重用此标题栏,那么您可能需要一个控制模板

您可以访问这些链接:

Displaying views in the navigation bar

Control Templates in Xamarin Forms

【讨论】:

  • 嘿!这正是我想要做的。我有一个带有内容视图的控制器,一个堆栈布局,但是仍然生成了汉堡图标,heightRequest 没有改变任何东西并且图标始终是白色的。知道为什么会这样吗?
【解决方案2】:

有关如何在 Shell 应用程序中自定义 TitleView,请参阅官方文档:

Xamarin.Forms Shell pages - Documentation

部分

1 - 设置页面颜色

  • ForegroundColor,Color 类型,用于定义文本和图标的阴影颜色。

2 - 在导航栏中显示视图

Shell.TitleView 附加属性,类型为 View,启用任何 View 显示在导航栏中。

虽然可以在子类 Shell 对象上设置此属性,但它可以 也可以在任何想要在导航中显示视图的页面上设置 酒吧。例如,以下 XAML 显示在 ContentPage 的导航栏:

您可以在 TitleView 中添加 ImageButtons 并使用 XamarinCommunityToolkit 中的 IconTintColorEffect 来更改图标的颜色:

https://github.com/xamarin/XamarinCommunityToolkit/blob/main/samples/XCT.Sample/Pages/Effects/IconTintColorEffectPage.xaml

【讨论】:

    猜你喜欢
    • 2023-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-05
    • 2020-11-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多