【发布时间】:2016-12-31 10:37:11
【问题描述】:
我能够完美地对齐基线。 getLineBounds 将提供与文本完全对齐的基线(lineBottom - 下降)。
我使用rect.top 作为顶线,这将在顶部提供一条带填充的线,请参阅屏幕截图。
主要问题是我有不同的字体。这段代码在某些字体上完美运行。
这是代码
int baseline = getLineBounds(i, rect);
int topLine = rect.top;
canvas.drawLine(rect.left - padding, baseline, rect.right + padding,
baseline, paint);
canvas.drawLine(rect.left - padding, topLine, rect.right + padding, topLine,
paint);
canvas.drawLine(rect.left - padding, (baseline + topLine) / 2, rect.right
+ padding, (baseline + topLine) / 2, paint1);
这是我尝试过的。
1) 使用“StaticLayout”来获取第一行,但没有任何区别。
2) 使用paint获取字体高度并添加到基线
paint.setTextSize(getTextSize());
paint.setTypeface(getCurrentTypFace());
paint.getTextBounds(getText().toString(), 0, getText().length(), r);
int height = r.height();
int topLine = baseline + height;
3) 尝试使用 FontPadding =false android:includeFontPadding="false"
所以我的问题是如何获得像基线一样的顶线。 非常感谢您提供任何帮助。
【问题讨论】:
标签: android fonts android-canvas textview