如何在Android中将字体设置为轻、正常。

43

我有三个文本视图。我需要将它们的字体设置为Light、Regular和Condensed。请问有人能帮我在Android中实现这个功能吗?


可能是重复的问题:Android文本样式缺少轻、中、细 - jfmg
2个回答

83

使用android:textStyleTextView上设置文本样式,如粗体斜体或普通。

以下是带有粗体文本样式的TextView示例:

<TextView
  android:id="@+id/hello_world"
  android:text="hello world"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:textStyle="bold"/>
如果您想使用轻或紧缩字体,您需要更改字体。您可以这样做:


android:fontFamily="sans-serif-light"

有关字体的更多信息,请参阅以下答案android:fontFamily的有效值及其映射?


1
如果您引用的字体不支持Light或Condensed样式,则只能将TextView显示为Light、Regular和Condensed。例如,如果您将一种字体导入项目中,但它没有Light或Condensed样式,我认为不能通过编程使TextView文本以该样式显示。如果您正在导入自己的字体,请在程序中进行处理,例如,在您的活动中声明一个全局TextView:
private TextView tv;

然后在onCreate()中,引用你保存在/assets文件夹中的字体文件:

Typeface someFontName-condensed = Typeface.createFromAsset(getAssets(), "assets/NameOfFont-condensed.ttf");

tv = (TextView) findViewById(R.id.myTextViewId);
tv.setTypeface(someFontName-condensed);

请注意,我导入了我的字体文件的压缩版本(.ttf格式),而不是打包的字体文件(.ttc格式)。您可以引入字体的各种样式版本,但应将它们作为单独的.ttf文件引入,而不是一个打包的文件,因为您需要引用特定的样式.ttf文件。
但是,如果您使用允许您从xml中引用各种样式的系统字体,请查看此处所说的内容: android:fontFamily的有效值及其映射? 正如他们所说,对于像Roboto这样的字体,您将使用fontFamily。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接