@(Android技术文章)

个人博客地址: 斯科特安的时间

Android中,在自定义View中通过Canvas绘制文字时,经常需要测量文字的宽度和高度。

Paint.measureText (测量文本的宽度)

Paint paint = new Paint();

paint.setTextSize(size);

float strWidth = paint.measureText(str);

Paint.getTextBounds (获得文字所在矩形区域,可以得到宽高)

Paint paint = new Paint();

Rect rect = new Rect();

paint.getTextBounds(str, 0, str.length(), rect);

int w = rect.width();

int h = rect.height();

Paint.getTextWidths(获得每个字符的宽度)

float width = 0;

int len = str.length();

Paint paint = new Paint();

float[] widths = new float[len];

paint.getTextWidths(str, widths);

for (int i = 0; i < len; i++) {

width += widths[i];

}

通过Paint.FontMetrics or Paint.FontMetricsInt来获取高度

Paint paint = new Paint();

paint.setTextSize(size);//设置字体大小

paint.setTypeface(Typeface.xx);//设置字体

FontMetrics fontMetrics = getFontMetrics();

float height1 = fontMetrics.descent - fontMetrics.ascent;

float height2 = fontMetrics.bottom - fontMetrics.top;

Layout.getDesiredWidth (获得宽度)

TextPaint textPaint = new TextPaint();

paint.setTextSize(size);//设置字体大小

paint.setTypeface(Typeface.xx);//设置字体

float width = Layout.getDesiredWidth(str,textPaint);

此外,还可以通过Paint.getFontSpacing和Paint.getFontMetrics(null)来获得高度,其实前者也是调用后者来实现的。这里的值和通过fontMetrics.descent - fontMetrics.ascent获得的大小是一致的。

android 测量字体宽高,Android中测量Text的宽度和高度相关推荐

  1. android+设置字体行高,android textview设置字体的行距和字间距

    android textview设置字体的行距和字间距 字间距 textView有一个属性android:textScaleX是调节字间距的,它的值是一个float型.查看源代码,默认textView ...

  2. android 自定义控件的宽高_巧用Handler获取View控件信息

    众所周知,在Android实际开发中,对于某些复杂多变的情况,控件的位置摆放.大小控制并非是xml类型的layout文件完全可以搞定的.此时,我们通常会使用Java代码来通过动态计算,将指定的控件摆放 ...

  3. Android 动态设置宽高

    Android 动态设置宽高 val params: FrameLayout.LayoutParams = view?.layoutParams as FrameLayout.LayoutParams ...

  4. android 文字尺寸(宽高)的测量

    FontMetrics 可以测量高度 关于FontMetrics的几个重要属性的解析 1.ascent 2.descent 3.top 4.bottom 5.leading 6.baseline 理解 ...

  5. Android 测量文字宽高

    前言 最近自定义控件,需要绘制文本,用到了获取文本宽高的代码,在此做下记录. Paint.measureText() 获取文本宽度 Paint paint = new Paint();paint.se ...

  6. android获取导航栏宽高,Android获取屏幕的宽高度、状态栏、标题栏、导航栏、编辑区域高度...

    目录 0.相关文章: 1.获取屏幕款高度 代码: /** * 获取屏幕宽度 * * @param context 上下文对象 * @return int */ public static int ge ...

  7. Android获取屏幕宽高,状态栏宽高,actionbar宽高,layout宽高,导航栏高度的方法汇总

    看这个博客你可以知道 获取屏幕宽高,状态栏宽高,actionbar宽高,layout宽高,导航栏(虚拟按键栏)高度的方法 目录顺序为 代码测试的机型 状态栏高度 actionbar高度 屏幕高度 导航 ...

  8. Android获取View宽高的常见方式

    背景 有时我们会有基于这样的需求,当Activity创建时,调用View.getWidth.View.getHeight().View.getMeasuredWidth() .View.getgetM ...

  9. Android 获取屏幕宽高的正确姿势

    前言 在开发时,我们经常需要根据屏幕的宽高来进行对view的适配,无论是自定义view还是andorid自带的一些控件,比如说需要占当前屏幕高度的30%,就需要获取到屏幕的宽高,但在获取宽高时我遇到了 ...

最新文章

  1. mysql的主从复制功能_Mysql的主从复制功能
  2. 元宇宙该如何发展才不会变为泡沫
  3. Python命令行参数学习
  4. 开发过程真相...太真实了!一毛一样有没有!
  5. RESTful API的理解
  6. mysql集群安装指南
  7. 上传到SAP云平台CloudFoundry上的nodejs应用存储的绝对路径
  8. Codeforces Round #FF (Div. 1) A. DZY Loves Sequences
  9. Java虚拟机是如何执行线程同步的
  10. eclipse导入外部项目引发的错误以及解决方案
  11. Bella Protocol已按计划调整流动性挖矿奖励方案
  12. 备份k8s_树莓派k8s集群安装kafka集群及监控
  13. STM8S103之时钟设置
  14. Hello CSDN
  15. PCB设计中常见的错误与解决方法
  16. Windows10系统C盘文件实际大小占用空间和可用空间不一致(相差差8到20G)
  17. 2017计算机研究生专业排名,2017年USNews美国大学计算机硕士研究生专业排名TOP110...
  18. GB\T和GB国标文件查询、下载方法(建议收藏)
  19. 计算机网络多元化媒体传达,网页版式设计的特征及其视觉元素
  20. Revit综合插件使用教程,综合插件主要的几个功能(上)

热门文章

  1. 314.二叉树的垂直遍历
  2. socket编程(十)
  3. c语言中英互译程序,c语言怎么翻译? 程序怎么运行?
  4. centos7 cuda测试_CentOS 7 安装cuda环境
  5. python元祖组成字典_Python基础之元组和字典
  6. c语言正则表达式库,c语言正则表达式库--PCRE
  7. How to remove ROM in MAME
  8. Moddable SDK为物联网开发提供JavaScript引擎:不到32KB
  9. 除了人工智能,霍金还担心“游牧外星人”会摧毁人类
  10. java EE设计模式--spring企业级开发最佳实践文摘