网络中好多资料介绍获取字体高度的方法如下:
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);
实践验证这种方式对多种分辨率的屏幕的适应性较强。
以上是个人在实际的功能实现过程中的总结,水平较浅,若看官有不同的看法或者见解,望不惜赐教!
2010_10_10_17_02
分享到:
相关推荐
- `Paint.getFontMetrics()`:返回一个FontMetrics对象,包含了关于字体高度的几个关键值: - `ascent`:字体的上升部分,即从基线到字体顶部的距离。 - `descent`:字体的下降部分,即从基线到字体底部的距离。 ...
1. **基于内容计算**:通过获取文本的字符数量,结合字体大小和预期的每行字符数,可以计算出所需的行数,从而得出文本视图的高度。这种方法适用于固定字体大小的情况。 2. **使用动态行高**:如果文本的字体大小也...
在Android中,可以通过Paint类的getTextSize()获取字体大小,通过getFontMetrics()获取字体的高度信息,包括行间距。为了准确计算控件的高度,需要遍历所有行,累加每一行的高度。 5. **注意事项**: 提示中提到...
另外,我们可以通过设置LayoutParams来调整单元格的宽度和高度,实现不同样式的单元格。 4. **自定义View**: 如果TableLayout的基础功能无法满足需求,我们可以创建一个自定义的View或ViewGroup,继承自...
总结来说,`FontMetrics`是Android中处理文字绘制时的重要工具,它的属性提供了对字体尺寸和位置的详细描述。通过合理利用这些信息,开发者可以创建出更加精致和用户体验良好的文本展示效果。希望本文能对你在...
1. 获取原始Bitmap的宽度和高度(`w`和`h`)。 2. 创建一个新的Bitmap对象`bmp`,用于存储带有水印的图片,配置为ARGB_8888格式,确保能容纳所有颜色信息。 3. 使用`Canvas`对象在新创建的Bitmap上进行绘图操作,将...
1. **自定义布局**:创建一个继承自`LinearLayout`或`RecyclerView.Adapter`的类,重写其`onMeasure()`方法,以支持动态计算和设置子视图的高度。如果是`RecyclerView`,还需要实现`onBindViewHolder()`方法,将数据...
此外,还可以设置行高亮、列冻结等效果,增强视觉表现。 5. **排序与过滤**:PremoTable提供内置的排序和过滤功能,用户可以通过点击表头进行列排序,或者根据条件过滤数据,使得大量数据的管理更加便捷。 6. **...