2017-06-12 42 views
5

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事物」;) –

回答

13

據谷歌它被支撐在的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

0

對於API鑑於超過26下需要使用app:fontFamily="@font/custom_font_from_resource"代替android:font

與支持的lib工作26+

1

有些用戶會登陸到這個搜索頁面上的指示,在您的應用程序中使用自定義字體從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+