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 - 拆分 Drawable 2022-01-01
- android 4中的android RadioButton问题 2022-01-01
- MalformedJsonException:在第1行第1列路径中使用JsonReader.setLenient(True)接受格式错误的JSON 2022-01-01
- 用 Swift 实现 UITextFieldDelegate 2022-01-01
- Android viewpager检测滑动超出范围 2022-01-01
- Android - 我如何找出用户有多少未读电子邮件? 2022-01-01
- 在测试浓缩咖啡时,Android设备不会在屏幕上启动活动 2022-01-01
- 如何检查发送到 Android 应用程序的 Firebase 消息的传递状态? 2022-01-01
- 想使用ViewPager,无法识别android.support.*? 2022-01-01
- 使用自定义动画时在 iOS9 上忽略 edgesForExtendedLayout 2022-01-01