`
jackeysion
  • 浏览: 129520 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

Android获取字体高度和设置行高(转)

阅读更多
网络中好多资料介绍获取字体高度的方法如下:
public int getFontHeight(float fontSize)   
{   
    Paint paint = new Paint();   
    paint.setTextSize(fontSize);   
    FontMetrics fm = paint.getFontMetrics();   
    return (int) Math.ceil(fm.descent - fm.top) + 2;   
}   


个人更倾向于以下方式获取字体实际高度:

Math.ceil(fm.descent - fm.ascent) 


通过实际的截图对文字高度的确定,后者更准确一些。

有了字体高度信息,就可以添加行与行之间的空隙,调整行高。
个人实现方式如下:

paint.setTextSize(fFontWidth);   
FontMetrics fm = paint.getFontMetrics();   
   
fFontHeight = (float)Math.ceil(fm.descent - fm.ascent);   
if(fFontHeight > fLineHeight)   
{   
    fMulValue = fLineHeight / fFontHeight;   
    fAddValue = -1;   
}   
else   
{   
    fMulValue = 1;   
    fAddValue = fLineHeight - fFontHeight;   
}   
textViewLeft.setTextSize(fFontWidth);   
textViewLeft.setLineSpacing(fAddValue, fMulValue); 


实践验证这种方式对多种分辨率的屏幕的适应性较强。

目前使用的是这种方法:
   public int getFontWidth(float fontSize) {
        Paint paint = new Paint();
        paint.setTextSize(fontSize);
        Paint.FontMetrics fm = paint.getFontMetrics();

        return (int) Math.ceil(fm.descent - fm.ascent);
    }

    public int getFontHeight(float fontSize) {
        Paint paint = new Paint();
        paint.setTextSize(fontSize);
        Paint.FontMetrics fm = paint.getFontMetrics();

        return (int) Math.ceil(fm.bottom - fm.top);
    }
分享到:
评论

相关推荐

    CListCtrl设置行高

    CListCtrl 设置行高 ...设置 CListCtrl 的行高需要继承 CListCtrl,重载 DrawItem() 和 MeasureItem() 函数,并添加 SetRowHeight() 函数。通过这种方式,可以根据需要调整 CListCtrl 的行高,以适应不同的显示需求。

    前端导出 excel ,设置字体,列宽,行高,对其方式,合并单元格等效果

    在前端开发中,有时我们需要为用户提供将数据导出为Excel的功能。这通常涉及到与后端交互,...在实际项目中,确保按照需求正确设置字体、列宽、行高、对齐方式和合并单元格,可以极大地提升导出文件的可读性和美观度。

    VC++ CListCtrl 控件 行高设置

    在VC++编程环境中,...以上就是关于在VC++中使用CListCtrl控件设置行高的详细步骤和方法。通过这些技术,你可以创建更符合用户需求的界面,提供更好的视觉体验。在实际开发中,应结合项目需求灵活运用这些技巧。

    可设置行高及每行颜色的ListCtrl

    在这个特定的情况下,我们关注的是一个被定制的 `ListCtrl`,它具有额外的功能,即允许用户设置每一行的高度和颜色,并能够获取指定行的颜色信息。 要实现这样的功能,开发者通常需要深入理解MFC(Microsoft ...

    ckeditor设置字体行高的插件

    ckeditor中用来设置字体行高的插件,解压后lineheight文件夹放到ckeditor--->plugins目录下即可,如果不明白可以参考http://blog.csdn.net/zcyhappy1314/article/details/8651053第二的部分:ckeditor的配置

    ListCtrl可设置行高和表头高

    一个自制的ListCtrl的MFC扩展库.编译MFCClassDll工程后,将MyListCtrl.h和MyListCtrl.lib拷贝到目标工程文件夹,在工程中包含MyListCtrl.h...调用SetHeight()可以设置ListCtrl的行高.程序须与MFCClassDll.dll一块执行.

    List Control 可编辑任意item文本,设置行高

    3. **调整item高度**:如果你希望在运行时改变行高,可以在需要时调用`SetItemHeight`函数,传入新的行高值和item的索引。 **示例代码片段** ```cpp void CMyListView::OnDrawItem(int nIDCtl, CDC* pDC, ...

    xlsx.full.js,JS生成excle文件,可设置行高

    描述中的“可设置行高”意味着`xlsx.full.js`库允许我们自定义每一行的高度,这样可以根据数据内容的长度和用户的视觉需求来调整。在实际应用中,如果某行的数据较多,可能需要增加行高以避免内容重叠;反之,如果...

    CSS布局中设置字体文字大小值大于行高值.docx

    在 CSS 布局中,设置字体文字大小值大于行高值是非常重要的,因为它可以避免文字之间的重叠和不完整显示的情况。下面我们将详细解释为什么需要设置字体文字大小值大于行高值,并提供解决方案。 一、问题描述 在 ...

    Excel精确设置列宽、行高

    本文将详细介绍如何在Excel中精确地设置列宽和行高的方法,包括使用界面操作与VBA编程两种方式。 #### 一、理解行高和列宽的基本概念 1. **行高**:指的是单元格的高度,单位是磅(pt)。默认情况下,Excel中行的...

    通过代码自定义cell,动态设置行高

    本教程将深入探讨如何通过代码自定义`cell`,并动态设置其行高,以适应不同内容的显示需求。这个过程适用于创建类似于微博、说说或微信消息的界面,这些应用通常包含头像、会员图标、配图、昵称、时间、来源以及正文...

    FastReport自动换行及行高自适应

    通过以上设置,FastReport将能够根据内容自动换行,并根据实际内容的高度自适应行高,确保了报表的显示效果和信息的清晰度。在实际应用中,可以根据报表的具体需求和页面布局灵活选择合适的方法,以达到最佳的视觉...

    ckeditor4 行高插件

    在实际开发中,开发者可能需要根据项目需求进一步扩展这个插件,比如增加动态计算行高的功能,或者与其他样式设置(如字体大小)联动。这就需要对CKEditor的插件开发机制有深入的了解,包括插件的生命周期、命令处理...

    给行内块元素设置行高无法垂直居中.zip

    6. 使用 CSS3 的伪元素技巧:创建两个相对定位的伪元素,分别位于元素的顶部和底部,设置与元素相同高度的负外边距,可以实现居中效果。 每种方法都有其适用场景和优缺点,开发者应根据项目需求选择合适的方法。在...

    GriView设置行高

    // 获取子视图并设置高度 TextView textView = (TextView) convertView.findViewById(R.id.textView); textView.setHeight(YOUR_DESIRED_HEIGHT); // 其他操作... return convertView; } ``` 2. **设置...

    CListCtrl设置不同行不同颜色,字体颜色

    你可以使用`GetItemRect`来获取项的矩形区域,接着用`SetBkColor`和`SetTextColor`设置背景色和字体颜色。最后,调用`DrawText`或`DrawTextEx`来绘制文本。例如: ```cpp void CMyListCtrl::OnDrawItem(int ...

    excel表格如何设置行高.doc

    在Excel表格中,设置行高和列宽是优化表格布局和提高数据可读性的重要步骤。以下是关于如何在Excel中设置行高和列宽的详细说明: 1. **自动调整行高和列宽**: - 在Excel2007中,首先选择需要调整的行或列。 - ...

    CKEditor编辑器行高插件

    1. 下载:首先,你需要从CKEditor的官方网站或者第三方资源库获取行高插件的压缩包,根据提供的文件名"lineheight",这个文件可能包含了插件的源代码和其他相关资源。 2. 解压:将下载的压缩包解压到CKEditor的...

    UITextView 设置行高 UILable 行高

    UITextView 和UILable 它本身是没有控制行高的。很多人说用Uiwebview,但我觉得那不好用,要用html布局麻烦,占内存。也有人说drawatpoint,但 发现画中文的时候也很占内存,我就投机取巧一下吧

    Listview 可自由调整行高 Vb6源码

    2. `LVM_SETITEMHEIGHT`:这是一个控制`ListView`消息的常量,用于设置或获取指定索引项的高度。它的参数通常包括`hWndListView`(`ListView`控件的句柄)、`iItem`(要设置高度的项的索引)和`nHeight`(新的高度值...

Global site tag (gtag.js) - Google Analytics