在没有 String.xml 的情况下使用 FontAwesome 从代码动态设置字体图标

Dynamically Set Font Icon from Code using FontAwesome without String.xml

我正在尝试在 textView 中使用 fontawesome.ttf 加载字体图标。 如果我将字符串值设置为  到 string.xml,那么它可以工作文件并显示图标。但是,如果以编程方式将相同的文本 "" 设置为 textView.setText("") 然后它不显示图标,而是在 textview 上显示相同的文本。

在不引用 string.xml 文件的情况下以编程方式显示图标的任何替代方法?

尝试使用 Unicode 代码...\uf007
这应该可以正常工作:

textView.setText("\uf007");

我尝试将字符串转换为 16 进制整数,但效果很好。

new String(Character.toChars(Integer.parseInt(
                        str, 16)))

str 的 unicode 值类似于 f007。

这是我迄今为止找到的很好的例子。

ORIGINAL ANSWER

从答案中复制粘贴:

  1. 已复制 fontawesome-webfont.ttf 到您的资产文件夹
  2. 使用此页面找到我想要的图标的字符实体:http://fortawesome.github.io/Font-Awesome/cheatsheet/
  3. 在 strings.xml 中为每个图标创建了一个条目。例如一颗心:

    <string name="icon_heart">&#xf004;</string>

  4. 在您的 xml 布局视图中引用了上述条目:

<Button android:id="@+id/like" ... android:text="@string/icon_heart" />

  1. 在我的 onCreate 方法中加载字体并为适当的视图设置它:

Typeface font = Typeface.createFromAsset( getAssets(), "fontawesome-webfont.ttf" ); Button button = (Button)findViewById( R.id.like ); button.setTypeface(font);

别忘了使用setTypeface()

把代码放在xml然后用

getString(R.string.fa_star_o);

工作正常