安卓如何选择自定义字体

4
如何让用户选择字体?在“首选项”中,我想要更改字体并列出字体列表。
我是这样设置字体的:
mTimerLabel = (TextView)findViewById(R.id.label); 
Typeface typeface = Typeface.createFromAsset(getAssets(), "Fonts/digital-7i.ttf");
mTimerLabel.setTypeface(typeface);
3个回答

2
您已经描述了在textView中更改字体的正确模型。我不明白您所面临的问题。调用textView的首选项,选择字体(或其ID),并设置它。

我不明白如何选择字体ID。也就是说,如果用户选择了“blabla.tff”,该如何设置它。 - user1704195
对我来说,最简单的方法是创建一个Map,其中包含首选项中的位置作为键和字体名称。例如:0 - bla.ttf 1 - blabla.ttf ... - SVS
然后通过选择首选项字段,您将获得其ID,并从Map中获取字体名称。 - SVS
1
在首选项中,您可以设置某些视图。例如ListView。其项目具有以下ID:0,1,2等。然后,当您为listView调用onItemClickListener时,您可以获取您单击的位置。该位置将是您所选择的字体的ID。 - SVS

2

您需要将ttf文件存储在资产文件夹中。此外,据我所知,您不能使用大写字符命名任何文件夹-就像您在Fonts中所做的那样。其余的方法是正确的。您可能需要使用Logcat检查您在首选项中存储的值。


1

将字体名称,例如digital-7i.ttf存储在偏好设置中,当用户选择任何字体时,您可以从偏好设置中替换名称并使用以下代码。

SharedPreferences Settings = getSharedPreferences(
            "<PREF_NAME>", MODE_PRIVATE);
    fontName = Settings.getString("<KEY>", "digital-7i.ttf");


mTimerLabel = (TextView)findViewById(R.id.label); 
Typeface typeface = Typeface.createFromAsset(getAssets(), "Fonts/"+fontName);
mTimerLabel.setTypeface(typeface);

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