Get font scaling factor to calculate the fontsize(获取字体比例因子以计算字体大小)
本文介绍了获取字体比例因子以计算字体大小的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
这个问题与Android App: how to read Font Size under Settings?有关,我读了CommonsWare的答案,指出要使用Settings.System.FONT_SCALE
。所以我写了这几行:
float scale = -66.6f;
try {
scale = android.provider.Settings.System.getFloat(getContentResolver(),
android.provider.Settings.System.FONT_SCALE);
} catch(SettingNotFoundException e) {
Log.e(getClass().getSimpleName(), "Error: ", e);
}
Toast.makeText(this, "scale=" + scale, Toast.LENGTH_LONG).show();
我的问题是我总是收到SettingNotFoundException
我使用的是Android 4.2.2设备。顺便说一句,该代码位于Activity
的onCreate
回调中。
我也在谷歌上搜索了这个问题,找到了大约3个使用相同代码的站点。需要一些特别许可吗?我还尝试了权限android.permission.WRITE_SETTINGS
,但没有成功。
推荐答案
我刚刚在Settings.System
的源代码中找到了这个函数:
/** @hide */
public static void getConfigurationForUser(ContentResolver cr,
Configuration outConfig, int userHandle) {
outConfig.fontScale = Settings.System.getFloatForUser(
cr, FONT_SCALE, outConfig.fontScale, userHandle);
if (outConfig.fontScale < 0) {
outConfig.fontScale = 1;
}
}
但是,有FONT_SCALE
在使用中,所以我检查了文档指向getResources().getConfiguration()
的Configuration
类。因此我可以使用以下命令修复代码:
float scale = getResources().getConfiguration().fontScale;
因为我的问题是要计算以像素为单位的正确字体大小,所以我现在在Kotlin使用它的方式是:
val Number.dpInPx: Int
get() = TypedValue.applyDimension(
TypedValue.COMPLEX_UNIT_DIP, toFloat(), Resources.getSystem().displayMetrics).toInt()
val Number.spInPx: Int
get() = TypedValue.applyDimension(
TypedValue.COMPLEX_UNIT_SP, toFloat(), Resources.getSystem().displayMetrics).toInt()
用法为:
val textSize = 42.spInPx
val padding = 8.dpInPx
这篇关于获取字体比例因子以计算字体大小的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
沃梦达教程
本文标题为:获取字体比例因子以计算字体大小


基础教程推荐
猜你喜欢
- UIWebView 委托方法 shouldStartLoadWithRequest:在 WKWebView 中等效? 2022-01-01
- Android:对话框关闭而不调用关闭 2022-01-01
- 如何在没有IB的情况下将2个按钮添加到右侧的UINavigationbar? 2022-01-01
- 如何让对象对 Cocos2D 中的触摸做出反应? 2022-01-01
- 当从同一个组件调用时,两个 IBAction 触发的顺序是什么? 2022-01-01
- Kivy Buildozer 无法构建 apk,命令失败:./distribute.sh -m “kivy"d 2022-01-01
- 如何在 UIImageView 中异步加载图像? 2022-01-01
- android 应用程序已发布,但在 google play 中找不到 2022-01-01
- 在 gmail 中为 ios 应用程序检索朋友的朋友 2022-01-01
- 如何在 iPhone 上显示来自 API 的 HTML 文本? 2022-01-01