android 设置ios 字体大小设置,解决修改系统字体大小APP字体跟着变大的问题

当Android app使用sp单位设置字体大小时,会受到系统字体大小设置的影响。本文介绍了一种简单有效的解决方案,即把sp全部改为dp,以避免文字大小随系统变化导致的布局挤压问题。同时,提供了通过代码控制不让app字体随系统变化的实现方法,经测试证明有效。
摘要由CSDN通过智能技术生成

前言

最近在做项目的时候,碰到了这个问题,具体是:app中字体大小用了sp,然后修改手机系统字体大小后,sp设置的文字大小跟着系统变了,导致了布局挤压以及一系列的问题,经过研究找到了解决方法,在此记录一下。

解决方案

把所有sp改成dp,因为dp不会根据系统字体大小设置变化而变化。简单,有效。就是改起来有点累。

通过代码来控制,让app字体不随系统字体变化而变化,具体代码如下:

/**

* 解决修改系统字体大小APP字体跟着变大的问题

* @param newConfig

*/

@Override

public void onConfigurationChanged(Configuration newConfig) {

if (newConfig.fontScale != 1)//非默认值

getResources();

super.onConfigurationChanged(newConfig);

}

@Override

public Resources getResources() {

Resources res = super.getResources();

if (res.getConfiguration().fontScale != 1) {//非默认值

Configuration newConfig = new Configuration();

newConfig.setToDefaults();//设置默认

res.updateConfiguration(newConfig, res.getDisplayMetrics());

}

return res;

}

亲测有效。

在 uni-app 中全局设置不同平台的字体大小,可以通过创建一个全局样式文件(例如 `global.scss` 或 `global.css`),并在其中定义不同平台的媒体查询(Media Queries),然后根据不同的平台条件应用不同的样式规则。 具体步骤如下: 1. 创建全局样式文件:在项目的 `static` 或 `assets` 目录下创建一个样式文件,比如命名为 `global.scss`。 2. 编写样式规则:在全局样式文件中,使用 CSS 的媒体查询来定义不同平台的字体大小。例如,可以为 AndroidiOS 分别设置不同的字体大小。可以使用 `@media` 规则来实现这一点。 ```scss @media all and (min-width: 320px) { .global-font-size { font-size: 14px; // 默认字体大小或其他平台的字体大小 } } @media screen and (min-width: 320px) and (-webkit-min-device-pixel-ratio: 2) { .global-font-size { font-size: 16px; // iOS设备的字体大小 } } @media screen and (min-width: 320px) and (min-device-pixel-ratio: 2) { .global-font-size { font-size: 16px; // Android设备的字体大小 } } ``` 3. 引入全局样式文件:在项目的 `App.vue` 文件或者 `main.js` 文件中,引入这个全局样式文件。例如,如果使用的是 `App.vue`,则在其中的 `<style>` 标签内引用该样式文件。 ```vue <style> @import url("./static/global.scss"); </style> ``` 4. 应用全局样式:在组件中使用全局定义的字体大小类。例如,在模板中使用 `.global-font-size` 类来应用全局定义的字体大小。 ```html <template> <view class="global-font-size">这是一段文本</view> </template> ``` 需要注意的是,上述代码仅为示例,实际使用时需要根据实际项目需求和设计规范调整选择器和字体大小值。另外,对于 H5 平台,可能还需要额外的媒体查询来覆盖不同设备和屏幕尺寸的设置
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值