TextView的setTextSize与xml中android:textSize属性值的对应关系

android中,对TextView设置文本字体大小,是通过在layout xml中设置android:textSize的属性值实现的,比如设置"24sp",这里的sp是一种单位,其他可选的单位还有px,dip(dp),pt,in,mm,建议使用sp。如果要在代码中设置文本字体大小,会用到setTextSize,传入一个float的值,那么这个float值的单位是什么呢?我原本以为是px,结果不是,查看代码发现:

复制代码
public void setTextSize(float size) {
    setTextSize(TypedValue.COMPLEX_UNIT_SP, size);
}

原来默认是sp,如果要设置以其他单位的size,就要用到带两个参数的setTextSize,

复制代码
public void setTextSize(int unit, float size) {
    if (!isAutoSizeEnabled()) {
        setTextSizeInternal(unit, size, true /* shouldRequestLayout */);
    }
}

第一参数可选的值在TypedValue.java中定义:

复制代码
/** {@link #TYPE_DIMENSION} complex unit: Value is raw pixels. */
public static final int COMPLEX_UNIT_PX = 0;
/** {@link #TYPE_DIMENSION} complex unit: Value is Device Independent
 *  Pixels. */
public static final int COMPLEX_UNIT_DIP = 1;
/** {@link #TYPE_DIMENSION} complex unit: Value is a scaled pixel. */
public static final int COMPLEX_UNIT_SP = 2;
/** {@link #TYPE_DIMENSION} complex unit: Value is in points. */
public static final int COMPLEX_UNIT_PT = 3;
/** {@link #TYPE_DIMENSION} complex unit: Value is in inches. */
public static final int COMPLEX_UNIT_IN = 4;
/** {@link #TYPE_DIMENSION} complex unit: Value is in millimeters. */
public static final int COMPLEX_UNIT_MM = 5;

顺便提一下dp单位和px单位之间的转换,但这里用不到。

复制代码
int dp2px(Context context, float dpValue) {
    final float scale = context.getResources().getDisplayMetrics().density;
    return (int) (dpValue * scale + 0.5f);
}
相关推荐
christ_lrs3 天前
2025.7.22 测试 总结
贪心·dp
小指纹10 天前
巧用Bitset!优化dp
数据结构·c++·算法·代理模式·dp·bitset
JIANGHONGZN10 天前
矿业自动化破壁者:EtherCAT转PROFIBUS DP网关的井下实战
dp·ethercat·协议网关·工业通讯·profibus dp
JIANGHONGZN10 天前
水务工程中自动化应用:EtherNet/IP转PROFIBUS DP连接超声波流量计
dp·ethernet/ip·协议网关·工业通讯·profibus dp
Cachel wood1 个月前
算法与数据结构:动态规划DP
数据结构·算法·动态规划·dp
JIANGHONGZN1 个月前
PROFIBUS DP 转 EtherCAT 网关:冶金自动化高效协同的基石
dp·ethercat·协议网关·profibus·profibusdp
JIANGHONGZN1 个月前
船舶动力与自动化系统:PROFIBUS转EtherCAT接口技术的创新应用
dp·ethercat·协议网关·工业通讯·profibus
IT Panda1 个月前
[分布式并行策略] 数据并行 DP/DDP/FSDP/ZeRO
pytorch·分布式训练·dp·deepspeed·ddp·fsdp·zero
怀念无所不能的你3 个月前
acwing背包问题求方案数
学习·算法·动态规划·dp
寻丶幽风3 个月前
论文阅读笔记——Reactive Diffusion Policy
论文阅读·笔记·机器人·dp·具身智能