我想更改xamarin(Theme.Material)的默认主题,我想要一个带灰色/黑色书写的白色背景。
我该怎么做?
有没有办法一次更改所有三个平台的设计,而无需针对不同平台进行自定义?
答案 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/