Xamarin.Forms 使用 Flyout/Menu Item 作为标题并自定义 BG 颜色和文本颜色

Posted

技术标签:

【中文标题】Xamarin.Forms 使用 Flyout/Menu Item 作为标题并自定义 BG 颜色和文本颜色【英文标题】:Xamarin.Forms use Flyout/Menu Item as header and customize BG Color and Text Color 【发布时间】:2020-08-26 19:58:54 【问题描述】:

在我的 shell 应用程序弹出菜单中,我希望有只是文本的标题项。它们必须是不可点击和可定制的(我想弄清楚的最重要的部分是可定制的部分)。

在我的 MainShell.xaml 页面中包含此代码会导致项目出现,但我无法弄清楚如何自定义它们的外观(我希望“父母”和“学生”具有不同的背景颜色和文本颜色) .

<MenuItem Text="Parent"/>

<FlyoutItem Title="Lobby">
    <ShellContent ContentTemplate="DataTemplate pages:Lobby" />
</FlyoutItem>

<FlyoutItem Title="Announcements">
    <ShellContent ContentTemplate="DataTemplate pages:Announcements" />
</FlyoutItem>

<MenuItem Text="Student"/>

【问题讨论】:

欢迎来到 SO!您的意思是要在 Xamarin Forms Shell 应用程序中为 MenuItem 设置背景颜色吗? 我想这样做,但也要改变字体的外观,使 MenuItem 不可点击,并且将文本一直放在左边(没有图标边距)。跨度> 好的,我已经更新了一个答案,你有时间可以看看。如果回复有帮助,请不要忘记接受它作为答案(点击左上角的✔这个答案),它将帮助其他有类似问题的人。 【参考方案1】:

有一个Shell.MenuItemTemplate可以Define MenuItem appearance,那么你可以自定义一个不同背景颜色和文字颜色的MenuItem。

例如:

<MenuItem>
    <Shell.MenuItemTemplate>
        <DataTemplate>
            <Label Text="Custom MenuItem"
                   HeightRequest="40"
                   HorizontalTextAlignment="Center"
                   VerticalTextAlignment="Center"
                   FontSize="Large"
                   FontFamily="Montserrat-Regular"
                   BackgroundColor="LightBlue" 
                   TextColor="Brown"/>
        </DataTemplate>
    </Shell.MenuItemTemplate>
</MenuItem>

效果:

【讨论】:

以上是关于Xamarin.Forms 使用 Flyout/Menu Item 作为标题并自定义 BG 颜色和文本颜色的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Xamarin.Forms 创建抽屉/滑块菜单?

在 Xamarin.Forms 中使用 Android 绑定

Xamarin.Forms:Forms.Context 已过时

Xamarin.Forms 手势密码实现

Xamarin.Forms - 使用 Xamarin.Essentials 在两个坐标之间获取里程

Xamarin.Forms之Effects的使用