热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

【菜鸟学安卓】-TextView的文字大小setTextSize和getTextSize设置

以我自己的手机为例:floatfontScalegetResources().getDisplayMetrics().scaledDensity;System.out.println(&quo

以我自己的手机为例:


float fOntScale= getResources().getDisplayMetrics().scaledDensity;

System.out.println("fOntScale=" + fontScale);//结果为:fOntScale=1.86

textView = (TextView)findViewById(R.id.textView);

System.out.println("系统默认:"+textView.getTextSize());//结果为:系统默认:26

textView.setTextSize(20);

System.out.println("设置默认:"+textView.getTextSize());设置默认:37.2

textView.setTextSize(TypedValue.COMPLEX_UNIT_DIP,20);

System.out.println("DIP设置:"+textView.getTextSize());//结果为:DIP设置:40

textView.setTextSize(TypedValue.COMPLEX_UNIT_PX,20);

System.out.println("PX设置:"+textView.getTextSize());//结果为:PX设置:20

textView.setTextSize(TypedValue.COMPLEX_UNIT_SP,20);

System.out.println("SP设置:"+textView.getTextSize());//结果为:设置默认:37.2

由上面的结果可知,


当这只 PX 的值 为20时 打印出来的值也是二十,说明getTextSize获取的值是px的值


setTextSize 默认的和设置 sp的值都是 37.2,说明设置setTextSize采用的参数是SP的值,


sp 和px的换算则是 20 * 1.86 = 37.2。


所以当我们在改变TextView的文字高度时就不能直接getTextSize 然后 setTextSize再赋值回去,因为两者采用的单位不同。


由于获取的值是px的值,所以我们再设置回去的时候自然也得用px才是一样的大小,


所以就得采用textView.setTextSize(TypedValue.COMPLEX_UNIT_PX,textView.getTextSize());这样才能得到原来的高度。



推荐阅读
author-avatar
零摄氏度玫瑰_460
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有