如何赋予用户选择字体的能力?在“首选项”中,我想更改字体和字体列表。
我以这种方式设置了字体:
mTimerLabel = (TextView)findViewById(R.id.label);
Typeface typeface = Typeface.createFromAsset(getAssets(), "Fonts/digital-7i.ttf");
mTimerLabel.setTypeface(typeface);
您已经描述了在 textView 中更改字体的正确模型。我无法理解你所面临的问题。调用 textView 的首选项,选择字体(或其 id)并设置它。
您必须将 ttf 存储在您的资产文件夹中。此外,AFAIK 你不能用大写字符命名任何文件夹——就像你在Fonts
. 其余的方法都很好。您可能希望使用 Logcat 检查您存储在首选项中的值。
将字体名称(即 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);