因此,我想android:fontFamily
,但在 Android 中看不到任何预定义的字体。如何选择预定义的之一?我真的不需要定义自己的 TypeFace,但是我所需要的只是与现在显示的有所不同。
<TextView
android:id="@+id/HeaderText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="52dp"
android:gravity="center"
android:text="CallerBlocker"
android:textSize="40dp"
android:fontFamily="Arial"
/>
看来我在那儿所做的并没有真正的用!顺便说一句android:fontFamily="Arial"
是一个愚蠢的尝试!
从 android 4.1 / 4.2 / 5.0 起,可以使用以下Roboto字体系列:
android:fontFamily="sans-serif" // roboto regular
android:fontFamily="sans-serif-light" // roboto light
android:fontFamily="sans-serif-condensed" // roboto condensed
android:fontFamily="sans-serif-black" // roboto black
android:fontFamily="sans-serif-thin" // roboto thin (android 4.2)
android:fontFamily="sans-serif-medium" // roboto medium (android 5.0)
与... 结合
android:textStyle="normal|bold|italic"
这 16 种变体是可能的:
fonts.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="font_family_light">sans-serif-light</string>
<string name="font_family_medium">sans-serif-medium</string>
<string name="font_family_regular">sans-serif</string>
<string name="font_family_condensed">sans-serif-condensed</string>
<string name="font_family_black">sans-serif-black</string>
<string name="font_family_thin">sans-serif-thin</string>
</resources>
这是通过编程方式设置字体的方法:
TextView tv = (TextView) findViewById(R.id.appname);
Typeface face = Typeface.createFromAsset(getAssets(),
"fonts/epimodem.ttf");
tv.setTypeface(face);
将字体文件放在资产文件夹中。就我而言,我创建了一个名为 fonts 的子目录。
编辑:如果您想知道您的资产文件夹在哪里,请参阅此问题
从 Android-Studio 3.0开始,它非常容易更改字体系列
使用支持库 26,它将在运行 Android API 版本 16 及更高版本的设备上运行
在res
目录下创建一个文件夹font
下载所需的字体并将其粘贴到font
文件夹中。结构应该像下面这样
注意:自 Android 支持库 26.0 起,您必须声明两组属性(android:和 app:),以确保字体在运行 Api 26 或更低版本的设备上加载。
现在,您可以用改变字形布局
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fontFamily="@font/dancing_script"
app:fontFamily="@font/dancing_script"/>
以编程方式更改
Typeface typeface = getResources().getFont(R.font.myfont);
//or to support all versions use
Typeface typeface = ResourcesCompat.getFont(context, R.font.myfont);
textView.setTypeface(typeface);
要使用 styles.xml更改字体,请创建样式
<style name="Regular">
<item name="android:fontFamily">@font/dancing_script</item>
<item name="fontFamily">@font/dancing_script</item>
<item name="android:textStyle">normal</item>
</style>
并将此样式应用于TextView
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@style/Regular"/>
您还可以创建自己的字体系列
-右键单击字体文件夹,然后转到 “新建”>“字体资源文件” 。出现 “新资源文件” 窗口。
-输入文件名,然后单击 “确定” 。新的字体资源 XML 在编辑器中打开。
例如,在此处编写您自己的字体系列
<font-family xmlns:android="http://schemas.android.com/apk/res/android">
<font
android:fontStyle="normal"
android:fontWeight="400"
android:font="@font/lobster_regular" />
<font
android:fontStyle="italic"
android:fontWeight="400"
android:font="@font/lobster_italic" />
</font-family>
这只是一个特定 fontStyle 和 fontWeight 到字体资源的映射,该字体资源将用于呈现该特定变体。 fontStyle 的有效值为 normal 或 italic;并且 fontWeight 符合CSS font-weight 规范
1.要更改布局中的字体家族,您可以编写
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fontFamily="@font/lobster"/>
2.以编程方式进行更改
Typeface typeface = getResources().getFont(R.font.lobster);
//or to support all versions use
Typeface typeface = ResourcesCompat.getFont(context, R.font.lobster);
textView.setTypeface(typeface);
要更改整个 App 的字体,请在 AppTheme 中添加这两行
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="android:fontFamily">@font/your_font</item>
<item name="fontFamily">@font/your_font</item>
</style>
有关更多信息,请参见文档,Android 自定义字体教程。