我可以在资源而不是渲染器中定义不同的文本样式吗?

时间:2018-07-17 08:32:26

标签: xamarin xamarin.forms

当前,我正在使用此渲染器设置文本大小的样式:

<local:StyledLabel YAlign="Center" Text="Buttons" HorizontalOptions="StartAndExpand" />                     

public class StyledLabel : Label
{
    public StyledLabel()
    {
        if (Device.RuntimePlatform == Device.Android)
        {
            Style = Device.Styles.CaptionStyle;
        }
        else if (Device.RuntimePlatform == Device.iOS)
        {
            Style = Device.Styles.ListItemTextStyle;
        }
    }
}

是否可以在资源XAML中执行类似的操作,以使iOS或Android的大小不同?

1 个答案:

答案 0 :(得分:1)

在XAML中,您可以这样指定不同的值:

<local:StyledLabel YAlign="Center" Text="Buttons" HorizontalOptions="StartAndExpand" />
    <local:StyledLabel.Style>
        <OnPlatform x:TypeArguments="Style">
            <OnPlatform.Platforms>
                <On Platform="iOS" Value="{StaticResource CaptionStyle}" />
                <On Platform="Android" Value="{StaticResource ListItemTextStyle}" />
            </OnPlatform.Platforms>
        </OnPlatform>
    </local:StyledLabel.Style>
  ...
</local:StyledLabel>

此处有更多信息:https://docs.microsoft.com/en-us/xamarin/xamarin-forms/xaml/xaml-basics/essential-xaml-syntax

不建议使用YAlignVerticalTextAlignment