Xamarin.Android - android:fontFamily不起作用

时间:2018-05-31 19:21:33

标签: android xamarin fonts xamarin.android

我需要使用android:fontFamily更改textView字体。 问题是它给了我错误,我不知道为什么

我的代码:

  <TextView
                android:text="Arial font"
                android:textSize="8pt"
                android:fontFamily="@font/arial"
                android:layout_marginTop="4pt"/>

我尝试了一切:在Assets文件夹中添加了Arial.ttf,在Assets中创建了一个字体文件夹,尝试更改属性,尝试在android:fontFamily中使用“arial.ttf”而不是“arial”,但没有任何工作

1 个答案:

答案 0 :(得分:1)

仅支持API-26及以上版本:

  • Resources/font目录

  • 中添加字体文件
  • 对于 API-26 + ,只有使用android:fontFamily的支持才可以:

    android:fontFamily="@font/tastysushi"

但是......对于API 16到28+,您需要设置/使用Android支持库

API-16 +

的支持
  • 添加Xamarin.Android.Support.Compat包(v26或更高版本)

  • 如果您在AXML布局中使用Xamarin.Android.Support.v7.AppCompat,则添加fontFamily包(v26 +)(否则您可以通过编程方式分配字体系列并使用Activity子类)

  • 您的活动必须AppCompatActivity的子类才能使布局/基于AXML的app:fontFamily属性正常工作

  • Resources/font目录

    中添加字体文件
     |-Resources
     |  |-font
     |  |  |-tastysushi.ttf
    
  • 可选但很方便,在Resources/font目录中创建一个字体系列xml文件(必须定义androidapp名称空间)

    <!-- Resource/font/sushi.xml -->    
    <?xml version="1.0" encoding="UTF-8" ?>
    <font-family 
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <font
        android:fontStyle="normal"
        android:fontWeight="400"
        android:font="@font/tastysushi"
    
        app:fontStyle="normal"
        app:fontWeight="400"
        app:font="@font/tastysushi"
    />
    

    注意:您也可以在字体系列中添加粗体和斜体font元素...并为每个字体分配不同的字体文件...

  • 在布局文件的top元素中添加app:命名空间:

    xmlns:app="http://schemas.android.com/apk/res-auto"

  • 现在fontFamily属性必须使用app:命名空间

    app:fontFamily="@font/sushi"

注意:@font/可以引用实际的字体文件或基于xml的字体系列文件

注意:您还可以在样式中嵌入字体,这样就不必使用字体系列填充每个AXML元素...