在XML API中使用字体<26

问题描述:

https://developer.android.com/preview/features/working-with-fonts.html在XML API中使用字体<26

的Android API 26支持这一点,但我们有一个支持库,可以提供使用的字体作为资源的资源? [XML中的字体]如果是,则支持哪些API?

我说的是Android O SDK功能,它允许我们按照上面的链接给出的XML设置字体。这当然不是MM中的本地功能。

+0

我在其中一个应用程序中使用了此功能,它支持从API 18到API 18的功能。据我所知,没有限制。我停止支持API 8,但我想它也可以与它一起工作。 –

+0

你已经添加到gradle的库? – sziraqui

+0

NONE。这是一个本地功能。顺便说一下,Eclipse并不需要所有的“Gradle事物”;) –

据谷歌它被支撑在的Android 4.0+只要满足这些条件(API 14+) :

  • 您正在使用支持库版本26.0.0-β1或更高版本
  • 您正在使用程序兼容性

来源:

Fonts in XML - Using the support library

Support Library revision history

我希望我能在应​​用小部件上的Android版本早于8使用这个(API 26) ,但这是不可能的,因为AppCompatTextView不能在应用程序小部件中使用。 Android O的“XML中的字体”(如Caligraphy库)的第三方替代品都不能在应用程序窗口小部件中使用。

为应用小部件唯一的替代方法是使用ImageView的代替TextView的并使用RemoteViews方法如setImageViewUri(...)setImageViewBitmap(...),两者的这是有问题的。

+0

谢谢。为什么其他人说它是一个本地功能?我使用SDK Android Studio 2.3.2。我尝试使用@ font/arial.ttf。它没有工作。我正在使用支持库版本25.3.1。现在我知道什么是错的。 – sziraqui

+0

做了这项工作?有些人说你必须升级到Android Studio 3才能正常工作。 – user1506104

+0

感谢您的指针。我将我的更改为,它现在可以工作。 – tmm1

下面是一个例子,分SDK支撑件18(在应用程序)

https://github.com/mukundrd/androidFonts

对于API鉴于超过26下需要使用app:fontFamily="@font/custom_font_from_resource"代替android:font

与支持的lib工作26+

有些用户会登陆到这个搜索页面上的指示,在您的应用程序中使用自定义字体从XML。下面是我做的:

默认情况下字体资源目录不存在。您可以通过以下的documentation here [工作太多了]

手动创建或从GUI的

  • 使用字体选择选择设计标签一个TextView。

  • 打开下拉的fontFamily xml属性。

  • 向下滚动到“更多字体”。

  • 选择从出现的弹出一个“可下载字体”。

的Android Studio会自动创建与文档上述必要的声明的字体资源目录。这一步后,您可以复制自定义字体文件(说myfont.ttf)的字体目录,并从XML设置所需的字体,例如:

<TextView 
    android:fontFamily="@font/myfont" 
    android:id="@+id/aboutus_head_textview" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:text="@string/who_are_we" /> 

如果您想使用整个应用程序相同的字体,你可以设置fontFamily中的AppTheme在styles.xml:

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> 
     <!-- Customize your theme here. --> 
     <item name="colorPrimary">@color/colorPrimary</item> 
     <item name="colorPrimaryDark">@color/colorPrimaryDark</item> 
     <item name="colorAccent">@color/colorAccent</item> 
     <!-- custom font for the entire app --> 
     <item name="fontFamily">@font/myfont</item> 
    </style> 

[前缀fontFamily中有android:如果以上没有工作]

截图:

Screenshot 1

Screenshot 2

注:这个答案假定您使用过Android Studio 3 +和支持库版本26+