根据用户选择以编程方式更改整个应用程序中的字体
Change font in whole application programmatically, based in user selection
我正在开发一个应用程序,用户可以在其中选择网络中的字体(他有大约 3 或 4 个选择)。该应用程序必须在整个应用程序中具有选定的字体,因此我需要以编程方式更改它(不涉及 XML)。我通过网络服务收到了用户选择的字体。我在网上搜索过,但我读过的所有解决方案都需要使用 XML.
0- 该应用在资产文件夹中有一些 (3-4) 个 .ttf 文件
1- 用户在网络中选择了一种字体。
2- Android 应用程序启动,并获取表示用户选择的字体的字符串常量(或 int)。
3- Android 应用程序根据用户选择在整个应用程序中更改其字体。
有办法实现吗?
要以编程方式更改整个应用程序中的字体,您可以尝试 书法 库
https://github.com/InflationX/Calligraphy
初始化字体将在应用程序中class所以我相信你可以实现你所要求的
ViewPump.init(ViewPump.builder()
.addInterceptor(new CalligraphyInterceptor(
new CalligraphyConfig.Builder()
.setDefaultFontPath("fonts/Roboto-RobotoRegular.ttf")
.setFontAttrId(R.attr.fontPath)
.build()))
.build());
你可以做类似
String fontPath;
if(userSelection == 0) { //userSelection value from the server
fontPath = "fonts/FirstFont.ttf"
} else if (userSelection == 1) {
fontPath = "fonts/SecondFont.ttf"
} else {
fontPath = "fonts/ThirdFont.ttf"
}
ViewPump.init(ViewPump.builder()
.addInterceptor(new CalligraphyInterceptor(
new CalligraphyConfig.Builder()
.setDefaultFontPath(fontPath)
.setFontAttrId(R.attr.fontPath)
.build()))
.build());
我假设您可以从服务器检索用户选择
我正在开发一个应用程序,用户可以在其中选择网络中的字体(他有大约 3 或 4 个选择)。该应用程序必须在整个应用程序中具有选定的字体,因此我需要以编程方式更改它(不涉及 XML)。我通过网络服务收到了用户选择的字体。我在网上搜索过,但我读过的所有解决方案都需要使用 XML.
0- 该应用在资产文件夹中有一些 (3-4) 个 .ttf 文件
1- 用户在网络中选择了一种字体。
2- Android 应用程序启动,并获取表示用户选择的字体的字符串常量(或 int)。
3- Android 应用程序根据用户选择在整个应用程序中更改其字体。
有办法实现吗?
要以编程方式更改整个应用程序中的字体,您可以尝试 书法 库
https://github.com/InflationX/Calligraphy
初始化字体将在应用程序中class所以我相信你可以实现你所要求的
ViewPump.init(ViewPump.builder()
.addInterceptor(new CalligraphyInterceptor(
new CalligraphyConfig.Builder()
.setDefaultFontPath("fonts/Roboto-RobotoRegular.ttf")
.setFontAttrId(R.attr.fontPath)
.build()))
.build());
你可以做类似
String fontPath;
if(userSelection == 0) { //userSelection value from the server
fontPath = "fonts/FirstFont.ttf"
} else if (userSelection == 1) {
fontPath = "fonts/SecondFont.ttf"
} else {
fontPath = "fonts/ThirdFont.ttf"
}
ViewPump.init(ViewPump.builder()
.addInterceptor(new CalligraphyInterceptor(
new CalligraphyConfig.Builder()
.setDefaultFontPath(fontPath)
.setFontAttrId(R.attr.fontPath)
.build()))
.build());
我假设您可以从服务器检索用户选择