解决系统改变字体大小的时候导致的界面布局混乱的问题

从android4.0起系统设置的”显示“提供设置字体大小的选项。这个设置直接会影响到所有sp为单位的字体适配,所以很多app在设置了系统字体后瞬间变得面目全非。下面是解决方案

Resources res = getResources();

Configuration config=new Configuration();

config.setToDefaults();

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

虽然google推荐使用sp作为字体的单位,但实际的开发过程中通常是根据UIUE的设计稿来换算 sp(px换算sp)。而sp即使在同一种密度下其值也不尽相同。比如在240dpi的设备,如果是480x800分辨率这个值通常是1.5倍 (scaledDensity=1.5),如果是480xZ(z>800)那么这个值有可能大于1.5。这无疑给设备的适配带来更多的困难和陷阱。所以个人通常建议使用dpi来作为字体的单位

对于个别app不需要根据系统字体的大小来改变的,可以在activity基类(app中所有的activity都应该有继承于我们自己定义的一个activity类)中加上以下code:

例如:Contacts中需要在com.android.contacts.activities.TransactionSafeActivity加入以下code

@Override

public Resources getResources() {

Resources res = super.getResources();

Configuration config=new Configuration();

config.setToDefaults();

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

return res;

}

如果app中只是个别界面不需要,可改造下此方法

@Override

public Resources getResources() {

if(isNeedSystemResConfig()){

return super.getResources();

}else{

Resources res = super.getResources();

Configuration config=new Configuration();

config.setToDefaults();

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

return res;

}

}

// 默认返回true,使用系统资源,如果个别界面不需要,在这些activity中Override this method ,then return false;

protected boolean isNeedSystemResConfig() {

return true;

}

解决系统改变字体大小的时候导致的界面布局混乱的问题

时间: 2024-10-17 13:16:52

解决系统改变字体大小的时候导致的界面布局混乱的问题的相关文章

葡萄城页面报表通过表达式来改变字体大小

如题,做报表时候,有时候要根据是否是合计行,来改变合计行的粗细,大小. 可以通过字体的表达式来实现: 表达式的通用写法:  =iif( Fields!YourFieldName.Value operator "Value to compare", "If condition is met, use this value.", "If not, use this one.") 如果满足条件(第一个参数),则执行第二个参数,否则执行最后一个参数 例如

手机端横竖屏切换,怎么做才能安卓浏览器及时改变字体大小

<!DOCTYPE html><html><head><meta charset="UTF-8"><title>账号绑定</title><meta name="viewport" content="width=device-width, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no"><meta

浏览器默认改变字体大小解决方案

前言 遇到个小坑,踩了一个多小时,真鸡儿难受. 是这样的,在移动端字体大小设置了16px,结果到 iphone5 上显示的有大有小,很奇怪.开始的时候还以为是P标签的原因,查了半天文档...最后才发现是浏览器的默认行为. 正文 在CSS中有  text-size-adjust  这样一个属性,这个属性允许我们控制将文本溢出算法应用到一些手机设备上.这个属性还没有写进标准,使用时必须加上前缀.如下: -webkit-text-size-adjust: ; text-size-adjust: ; -

老人机修改了手机系统默认字体大小的情况处理。

今天发现了rem有一个不适配的情况. 如果有用户把自己手机默认字体改为超大号的话,界面就变形了. 因为之前我们开发一直以320px为最小适配宽度的. 但是改为超大号字体后,rem还认为是320px的宽, 实际上我换算了一下,只有270px宽了,所以有一些浮动的布局会掉下来,或者是看不到, 用苹果手机试了,居然是正常的. 后来,我发现改为超大字体后,网页在uc浏览器.系统自带浏览器和微信浏览器也都是正常的(安卓), 偏偏在我们app里显示不正常, 我得出结论,一定是webview的某个参数没设定.

[转]Ubuntu16.04安装wps并解决系统缺失字体问题

本文转自 tongqingliu 链接:http://www.cnblogs.com/liutongqing/p/6388160.html 进入WPS官网下载deb包: http://linux.wps.cn/ 安装,打开终端: cd 下载 sudo dpkg -i wps-office_10.1.0.5672~a21_amd64.deb 解决打开WPS时出现的系统缺失字体问题: 下载 https://pan.baidu.com/s/1eS6xIzo wps_symbol_fonts.zip 将

eclipse如何改变字体大小

Windows >>perferences General>> appearance>>Colors and Fonts 点开之后,在Basic 下面找到Text Font 点击Edit 选择适合的字体大小,按确定.

iOS UILabel根据文本宽度改变字体大小

之前一直不知道有这样一个属性,看了这篇博文才知道 http://my.oschina.net/joanfen/blog/145184 myLabel.adjustsFontSizeToFitWidth = YES; //假设文字内容为@"曾在月光之下望烟花,曾共看夕阳渐降下",Label长度为200,则一行显示不下,若设置此属性为YES,则会降低字体大小,以显示全部内容.

stylish——一键为网页换肤,改变字体大小,去除广告

今天给大家介绍的是一款非常好用的插件stylishstylish是一款可以为网站自定义主题的插件 可以在chrome的应用商店找到也可以通过网址访问https://userstyles.org/ 应用商店找到安装即可 点击网站也可以进入官网进入网站后输入你想要换皮肤的网站 举个栗子:比如我想给GitHub换个皮肤 点击进去之后 因为我安装过了 所以这里是更新安装后打开GitHub就能看到效果了 炫酷的不要不要的 当然如果你觉得这些皮肤都不好看 你也可以自己写代码自定义任意网站的布局 颜色 字体大

嵌入式Qt-4.8.6显示中文并且改变字体大小和应用自己制作的字体库

问题: QT4.8.6在移植到开发板上的时候,中文支持是必不可少的,如何让QT支持中文,如何制作QT支持的字体文件,如何使QT UI编辑器中的字号与开发板中的字号一致. 详解: 1>如何让QT支持中文  QT程序中指明的字体和字号在/opt/qt-4.8.6/lib/fonts目录下没有对应的字库文件时,QT会选择某一个存在的字库文件来显示:那么,如果你的系统中只有需要一种字体和字号,那么则可以将fonts目录下不需要的字库文件全部删掉,只保留这个需要的字体文件即可. 上面是一种很方便的做法,无