android kotlin 监听系统字体变化保持应用字体不变
在 Android Kotlin 中,可以使用以下方法来监听系统字体变化,从而保持应用字体不变:
- 创建一个
BroadcastReceiver并注册ACTION_FONT_CHANGED意图过滤器:
class FontChangedReceiver : BroadcastReceiver() {
override fun onReceive(context: Context?, intent: Intent?) {
if (intent?.action == Intent.ACTION_FONT_CHANGED) {
// 处理字体变化事件
}
}
}
val fontChangedReceiver = FontChangedReceiver()
val filter = IntentFilter(Intent.ACTION_FONT_CHANGED)
registerReceiver(fontChangedReceiver, filter)
- 在
onReceive方法中处理字体变化事件,例如重新设置应用字体:
override fun onReceive(context: Context?, intent: Intent?) {
if (intent?.action == Intent.ACTION_FONT_CHANGED) {
// 重新设置应用字体
val font = ResourcesCompat.getFont(context!!, R.font.my_font)
textView.typeface = font
}
}
- 在适当的时候取消注册
BroadcastReceiver:
unregisterReceiver(fontChangedReceiver)
注意:ACTION_FONT_CHANGED 意图只在 Android 12 及以上版本中可用。在低版本系统中,可以通过监听系统配置变化来模拟字体变化事件。例如:
val filter = IntentFilter().apply {
addAction(Intent.ACTION_CONFIGURATION_CHANGED)
addAction(Intent.ACTION_SCREEN_SIZE_CHANGED)
addAction(Intent.ACTION_SCREEN_OFF)
addAction(Intent.ACTION_SCREEN_ON)
}
registerReceiver(fontChangedReceiver, filter)
``
原文地址: https://www.cveoy.top/t/topic/cSZI 著作权归作者所有。请勿转载和采集!