自定义控件中setText()设置字体相同大小无法与原生控件一致
来源:互联网 发布:台湾网络电视tv版 编辑:程序博客网 时间:2024/06/06 10:47
一、问题:自定义控件和原生TextView中都设置字体大小为10sp,为什么显示的差异会这么大?
二、剖析:(1)经过debug发现,设置的10sp,到后台后变成了30;手机是1080*1920的,所以在这里已经是被转成像素后的大小。
对分辨率及比例不是很了解的,可以简单参考下图:
(2)为什么原生TextView不会有问题呢?于是就跟了下TextView的源码,发现: private void setRawTextSize(float size) { if (size != mTextPaint.getTextSize()) { mTextPaint.setTextSize(size); if (mLayout != null) { nullLayouts(); requestLayout(); invalidate(); } } }
三、解决:最后是设置的Paint的大小,于是做如下修改: textView.setText(text);// textView.setTextSize(textSize); textView.getPaint().setTextSize(textSize);
效果图:
0 0
- 自定义控件中setText()设置字体相同大小无法与原生控件一致
- 自定义控件中setText()设置字体相同大小无法与原生控件一致
- 自定义控件,设置其控件大小
- VC控件大小和字体设置
- Activity 中获取所有控件 并设置自定义字体
- 设置html 输入框控件text的自定义长度宽度和字体的大小
- VC中控件字体与文本颜色的设置
- VC中控件字体与文本颜色的设置
- VC中控件字体与文本颜色的设置
- edit控件中如何设置字体的颜色,并把一行文字设置成不同大小。
- 自定义控件之设置文本的大小
- 自定义控件设置canvas画布的大小
- 代码设置与xib上控件一致的颜色
- Android 调整控件位置和大小(以textView为例,并设置字体与背景颜色)
- MM求助:如果让Datagrid控件大小与窗体大小一致
- static控件设置字体与透明属性
- 控件的setText
- WebBrowser控件中JS与原生交互
- gitlab多人协同工作
- Java 移位运算(<<、>>、>>>)
- Android动画之视图动画和属性动画
- 如何将char[]数组转换为String字符串
- pat 天梯 L2-4. 这是二叉搜索树吗?
- 自定义控件中setText()设置字体相同大小无法与原生控件一致
- [主席树] BZOJ 1803 Spoj1487 Query on a tree III
- 【cocos2d-x从c++到js】11:JS与C++的交互3——C++和JS类型转换
- 最短子数组
- android通过网络实现音乐轮播
- 【HTTP】Fiddler(一) - Fiddler简介
- 关于perfmon2的使用记录
- 深入JVM虚拟机(二) JVM运行机制
- ACM刷题之HDU————小数化分数2