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
这篇关于获取字体比例因子以计算字体大小的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
织梦狗教程
本文标题为:获取字体比例因子以计算字体大小
基础教程推荐
猜你喜欢
- Android:getLastKnownLocation(LocationManager.NETWORK_PROVIDER 2022-01-01
- 如何从 logcat 中删除旧数据? 2022-01-01
- libGDX 从精灵或纹理中获取像素颜色 2022-01-01
- iOS4 创建后台定时器 2022-01-01
- iPhone - 获取给定地点/时区的当前日期和时间并将其与同一地点的另一个日期/时间进行比较的正确方法 2022-01-01
- 通过重定向链接在 Google Play 中打开应用 2022-01-01
- AdMob 广告未在模拟器中显示 2022-01-01
- NSString intValue 不能用于检索电话号码 2022-01-01
- Cocos2d iPhone 非矩形精灵触摸检测 2022-01-01
- navigator.geolocation.getCurrentPosition 在 Android 浏览器上 2022-01-01
