如何自定义Xamarin.forms应用程序?

时间:2016-03-11 07:26:36

标签: c# xamarin.forms

我想更改xamarin(Theme.Material)的默认主题,我想要一个带灰色/黑色书写的白色背景。

我该怎么做?

有没有办法一次更改所有三个平台的设计,而无需针对不同平台进行自定义?

2 个答案:

答案 0 :(得分:0)

大卫布里奇写了一篇关于Xamarin的文章。几天前写了主题。

https://blog.xamarin.com/app-theming-with-xamarin-forms-control-templates

这是一个良好的开端。

答案 1 :(得分:0)

我的回答描述了如何仅针对您的Android应用执行此操作 - 它不会解决其他平台问题。既然你提到“材料”,这是一个仅限Android的东西,那么你的实际目标是什么并不清楚。还有另一个答案会引导您获取有关基于表单的主题的信息,但该方法会覆盖Material。

最简单的方法是更改​​您的活动主题。打开MainActivity.cs并修改属性以指定它。例如,如果要从默认的黑暗主题切换到灯光主题,则可以从以下位置更改:

[Activity (
    Label = "Demo.Droid",
    Icon = "@drawable/icon",
    MainLauncher = true,
    ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation
)]

到此:

[Activity (
    Label = "Demo.Droid",
    Icon = "@drawable/icon",
    MainLauncher = true,
    ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation,
    Theme = "@android:style/Theme.Material.Light"
)]

如果您想进一步自定义主题,则可以在Android项目的values文件夹下添加Resources文件夹,并添加名为`Styles.xml'的xml文件。在此文件中,您可以基于内置主题创建自定义主题。例如:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="CustomTheme" parent="android:Theme.Material.Light">
        <item name="android:colorPrimary">@color/app_bar</item>
        <item name="android:colorPrimaryDark">@color/status_bar</item>
        <item name="android:windowBackground">@color/bg</item>
    </style>
</resources>

这些颜色(“app_bar”,“status_bar”,“bg”)需要定义,因为我刚制作它们。要定义颜色,请在Colors.xml文件夹中添加values文件,如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<resources>
    <!-- Purple hues -->
    <color name="app_bar" type="color">#FFE1BEE7</color>
    <color name="status_bar" type="color">#FFBA68C8</color>
    <color name="bg" type="color">#FFFFFFFF</color>
</resources>

然后您可以在您的活动中引用该自定义主题:

[Activity (
    Label = "Demo.Droid",
    Icon = "@drawable/icon",
    MainLauncher = true,
    ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation,
    Theme = "@style/CustomTheme"
)]

这应该让你大致了解如何做到这一点。以这种方式应用的主题适用于非Forms应用程序和Forms应用程序,假设您没有通过XAML或应用程序中的其他位置应用某些手动字体/颜色值 - 换句话说,使用Android主题默认情况下,除非你覆盖它。

您可以在此处找到更多信息(包括如何优雅地降级非物质设备):https://developer.xamarin.com/guides/android/user_interface/material_theme/