是否可以将所有包含文本的页面元素的默认文本颜色设置为特定颜色?
对我来说,我不需要为每个包含文本的元素设置一个“ TextColor”属性。
谢谢!
答案 0 :(得分:2)
您可以在App.xaml中设置包含文本的元素的样式。这将为您在应用程序中使用的所有标签,按钮等设置TextColor:
<Style TargetType="Label">
<Setter Property="TextColor" Value="Red" />
</Style>
<Style TargetType="Button">
<Setter Property="TextColor" Value="Red" />
</Style>
<Style TargetType="Entry">
<Setter Property="TextColor" Value="Red" />
</Style>
<Style TargetType="Editor">
<Setter Property="TextColor" Value="Red" />
</Style>
...
不幸的是,您将必须为所有包含文本的Visual Elements添加一个新的Style标签。不久前,我一直在寻找一种更干净的方法来为所有带有文本的元素定义样式。但这似乎是最干净的方法...
希望Xamarin.Forms将添加更通用的方式来处理样式。
答案 1 :(得分:0)
您可以使用DenseCrab上面显示的样式。 您还可以创建一个与Label类不同的类。您可以在其中设置一些默认属性,例如颜色。
答案 2 :(得分:0)
自Xamarin Forms 2.6.0起,您可以使用CSS样式。这样您就可以全局设置元素或特定CSS类的样式。
将文件styles.css
添加到具有以下内容的文件夹YouProject.Shared > Assets
中。 (请注意^
符号。它将选择具有该基类的任何元素)
^Label {
color: red;
}
^Entry {
color: red;
}
^Button {
color: red;
}
将资源添加到全局视图(例如,您使用MasterDetailPage
)来加载CSS文件:
<MasterDetailPage.Resources>
<StyleSheet Source="/Assets/styles.css" />
</MasterDetailPage.Resources>`
答案 3 :(得分:0)
您必须为Label and Entry或android和iOS中的任何其他控件创建自定义渲染,并且可以直接在其中应用颜色
[assembly: ExportRenderer(typeof(Label), typeof(IOSLabelRenderer))]
namespace test
{
public class IOSLabelRenderer : LabelRenderer
{
protected override void OnElementChanged(ElementChangedEventArgs<Label> e)
{
base.OnElementChanged(e);
Control.TextColor = UIColor.Brown;
}
}
}
您也可以为Android创建相同内容