我试图列出所有可用的字体。一切似乎在Android Oreo上工作正常..但是当我在我的选项卡上测试它时它不起作用虽然android团队说支持这个功能来自api 14及更高......
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="10dp">
<Spinner
android:id="@+id/size_spinner"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
>
</Spinner>
<RadioGroup
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<RadioButton
android:id="@+id/amatic_regular"
android:layout_width="wrap_content"
android:layout_height="50dp"
android:fontFamily="@font/amatic_font"
android:gravity="center"
android:text="Amatic"
android:textSize="25sp" />
<RadioButton
android:id="@+id/annie_use_your_telescope"
android:layout_width="wrap_content"
android:layout_height="50dp"
android:fontFamily="@font/annie_use_your_telescope"
android:gravity="center"
android:text="annie telescope"
android:textSize="25sp" />
<RadioButton
android:id="@+id/Windsong"
android:layout_width="wrap_content"
android:layout_height="50dp"
android:fontFamily="@font/windsong"
android:gravity="center"
android:text="Windsong"
android:textSize="25sp" />
<RadioButton
android:id="@+id/cac_champagne"
android:layout_width="wrap_content"
android:layout_height="50dp"
android:fontFamily="@font/cac_champagne"
android:gravity="center"
android:text="Cac champangne"
android:textSize="25sp" />
<RadioButton
android:id="@+id/fff_tsuj"
android:layout_width="wrap_content"
android:layout_height="50dp"
android:fontFamily="@font/fff_tsuj"
android:gravity="center"
android:text="fff ttsu"
android:textSize="25sp" />
<RadioButton
android:id="@+id/cavier_dream_font"
android:layout_width="wrap_content"
android:layout_height="50dp"
android:fontFamily="@font/cavier_dream_font"
android:gravity="center"
android:text="Cavier Font"
android:textSize="25sp" />
<RadioButton
android:id="@+id/roboto_regular"
android:layout_width="wrap_content"
android:layout_height="50dp"
android:fontFamily="@font/roboto_regular"
android:gravity="center"
android:text="Robboto"
android:textSize="25sp" />
<RadioButton
android:id="@+id/SEASRN__"
android:layout_width="wrap_content"
android:layout_height="50dp"
android:fontFamily="@font/seasran__"
android:gravity="center"
android:text="seasrn"
android:textSize="25sp" />
<RadioButton
android:id="@+id/Capture_it"
android:layout_width="wrap_content"
android:layout_height="50dp"
android:fontFamily="@font/capture_it"
android:gravity="center"
android:text="capture it"
android:textSize="25sp" />
<RadioButton
android:id="@+id/OpenSans-Light"
android:layout_width="wrap_content"
android:layout_height="50dp"
android:fontFamily="@font/opensans_regular"
android:gravity="center"
android:text="OpenSans Light"
android:textSize="25sp" />
</RadioGroup>
答案 0 :(得分:1)
我不知道您从哪里听说Android 4.4及更高版本支持字体资源,但这是错误的。
直到Android Oreo:才添加 @font
个资源
Android 8.0(API级别26)引入了一项新功能,即XML中的字体,可让您将字体用作资源。您可以在res / font /文件夹中添加字体文件以将字体捆绑为资源。这些字体在您的R文件中编译,并在Android Studio中自动提供。您可以借助新的资源类型字体访问字体资源。例如,要访问字体资源,请使用@ font / myfont或R.font.myfont。
之前添加了fontFamily
属性,但它被available fonts限制,直到API 26与字体资源一起发布。在API 26下面的API中,您必须以编程方式设置自定义字体。
因此,对于Android Nougat及更低版本,您必须以编程方式设置它。只有Oreo和更新版本支持@font
资源。
您可以使用以下内容检查当前的API:if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O)
然后首先使用它加载它,文件名当然是:
Typeface quicksand = Typeface.createFromAsset(c.getAssets(),
"Quicksand-Bold.ttf");
最后,设置它:
someTextview.setTypeface(quicksand);
您仍然可以将该属性保留在XML文件中。在构建时,根本不会忽略在给定API级别上不存在的XML标记,因此您仍可以将其保留在API 26及更高级别
您使用支持库。如果使用支持库(通常称为AppCompat 1 ),则可以使用它。例如:
<?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/myfont-Regular"
app:fontStyle="normal" app:fontWeight="400" app:font="@font/myfont-Regular"/>
<font android:fontStyle="italic" android:fontWeight="400" android:font="@font/myfont-Italic"
app:fontStyle="italic" app:fontWeight="400" app:font="@font/myfont-Italic" />
</font-family>
There's a section in the docs about it也很好看。
您还需要此依赖项(在编写时,版本是最新版本。对于以后的使用,您可能需要查找最新版本的支持库):
compile "com.android.support:appcompat-v7:27.0.2"
由于其他原因,支持库是支持依赖项的集合,但AppCompat库是向后兼容性的支持库,并且是此处引用的