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);
}
相关推荐
sweetheart7-74 天前
LeetCode1143. 最长公共子序列(2024冬季每日一题 36)
算法·动态规划·力扣·dp·最长公共子序列
終不似少年遊*6 天前
Python数据结构与算法03
开发语言·数据结构·python·算法·蓝桥杯·学习笔记·dp
小菜日记^_^1 个月前
BEAGLE: Forensics of Deep Learning Backdoor Attack for Better Defense(论文阅读)
论文阅读·人工智能·深度学习·sp·ai安全·backdoor 后门攻击·安全四大
丶Darling.1 个月前
Day41 | 动态规划 :完全背包应用 完全平方数&&单词拆分(类比爬楼梯)
算法·动态规划·dp·lambda·记忆化搜索·回溯·c++\
机器学习之心2 个月前
数据转换 | Matlab基于SP符号递归图(Symbolic recurrence plots)一维数据转二维图像方法
sp·一维数据转二维图像·符号递归图
dengqingrui1233 个月前
【树形DP】AT_dp_p Independent Set 题解
c++·学习·算法·深度优先·图论·dp
疯狂的小强呀3 个月前
超详细讲解:DP和DDP的区别以及使用方法
算法·dp·ddp
Jcqsunny3 个月前
[dp] 小信走迷宫
算法·前缀和·动态规划·dp
源代码•宸3 个月前
Leetcode—322. 零钱兑换【中等】(memset(dp,0x3f, sizeof(dp))
c++·算法·leetcode·职场和发展·dp
Qres8213 个月前
[SCOI2014] 方伯伯的玉米田(dp+树状数组维护行列)
数据结构·dp·ds