Xamarin.Forms的分辨率Depdendent FontSize

时间:2017-03-30 15:47:43

标签: c# xamarin xamarin.ios xamarin.android xamarin.forms

所以我正在开发一个用于平板电脑的Xamarin.Forms应用程序,现在我需要它也可以在手机上运行 - 很好,Xamarin.Forms应该处理所有这些(或者我认为)。

我在手机上运行了该应用程序,但它没有缩小字体(或任何尺寸,但我会以字体开头)

我创建了一个类似的扩展方法:

[ContentProperty("FontSize")]
public class FontExtension : IMarkupExtension
{
    public string FontSize { get; set; }

    public object ProvideValue(IServiceProvider serviceProvider)
    {
        double fontSize;

        if (FontSize == null)
            throw new Exception("No Font Size provided");

        if (!double.TryParse(FontSize, out fontSize))
            throw new Exception("Font Size Provided is not a double");

        return App.Scaling * fontSize;
    }
}

我在我的应用程序FontSize={ns:Font 18}中使用它,这会根据App.Scaling属性缩减我的应用程序。如果属性为0.8,则此属性设置为Phone

我还发现两个链接在Xamarin.Android中提供了一种方式,但我正在进行Xamarin.Forms申请,因此不适用。 (link1link2

是否可以根据设备分辨率而非成语来缩小字体?

2 个答案:

答案 0 :(得分:2)

您可以使用其他两个选项。

  1. OnIdiom - 依赖值。
  2. 我知道您希望完全控制大小,但根据我的经验,它不太适合开发过程。特别是,每次都定义所有文本大小。很常见的方法是在资源字典中使用Style。样式定义可能占用很多空间,但是将它们应用到控件上要快得多。

    所以,你可以这样做:

    <ResourceDictionary>
        <Application.Resources>
    
            <OnIdiom x:TypeArguments="x:Double" x:Key="MySize" Phone="15" Tablet="24"/>
    
            <Style TargetType="Label" x:Key="MyCustomStyle">
                <Setter Property="FontSize" Value="{StaticResource MySize}"></Setter>
            </Style>
    
        </ResourceDictionary>
    </Application.Resources>
    

     <Label Style="{StaticResource MyCustomStyle}" Text="My Text"/>
    
    1. 使用DynamicResource作为described here

      <Style x:Key="myDerivedCustomStyle" TargetType="Label" BaseResourceKey="myCustomStyle">
            ...
      </Style>
      
    2. 并计算C#代码中所需的所有值:

          var myCustomStyle = new Style (typeof(Label)) {
              // calculating and defining required FontSize here
          };
          Resources = new ResourceDictionary();
          Resources.Add ("myCustomStyle", myCustomStyle);
      

答案 1 :(得分:0)

Xamarin Forms提供了一些命名尺寸 - 小型,中型,大型等,可以满足您的需求。根据您的平台,这些最终会有不同的尺寸。

https://developer.xamarin.com/guides/xamarin-forms/user-interface/text/fonts/#Font_Size