gpt4 book ai didi

android - 无法使用 Typeface.createFromFile() 更改 View 的字体样式

转载 作者:行者123 更新时间:2023-11-30 01:05:33 24 4
gpt4 key购买 nike

我必须使用 Typeface.createFromFile() 来使用用户内存中的字体位置,这样字体文件将由用户选择,然后用于更改 View 的字体。我不能使用 Typeface.createFromAsset(getAssets(),"FileAssets"); 因为字体文件是动态的,可以由用户选择。下面的代码是更改 TextView 字体样式的示例代码,但它不起作用。我该如何处理?

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView tv = (TextView) findViewById(R.id.textview);
File file = new File(Environment.getExternalStorageDirectory()+"/testfont/","font1.ttf");
if (file.exists()) {
try {
Typeface tb = Typeface.createFromFile(file.getPath());
tv.setTypeface(tb);
}
catch (RuntimeException e) {
Log.d("TED", "Unable to create a font from " + file.getName());
}

}
}
}

最佳答案

File file = new File("sdcard/testfont.font.ttf");

这不是一个有效的路径。使用适当的方法在 external storage 上构建字体文件的路径.

如果您在试验 Android 时将字体作为 testfont.font.ttf 文件放在外部存储的根目录中,请使用:

File file = new File(Environment.getExternalStorageDirectory(), "testfont.font.ttf"));

请注意,您需要持有READ_EXTERNAL_STORAGEWRITE_EXTERNAL_STORAGE 权限才能访问此位置,而这又需要您实现runtime permissions如果您的 targetSdkVersion 设置为 23 或更高。

关于android - 无法使用 Typeface.createFromFile() 更改 View 的字体样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38898333/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com