我正在开发NativeScript JavaScript代码来为地图创建动态文本标记。我的代码可以为特定的字符串创建标记。我的下一步是获取任何给定的字符串,确定其高度和宽度(以位为单位),并创建大小适合于包含文本的标记。
我的问题是找到给定文本字符串本身,字体大小和字体系列的文本大小。
看起来getMeasuredWidth可以工作,除了必须在该函数返回值之前将字符串加载到页面上。就我而言,我只需要计算大小即可;否则该文本将不会在页面上显示出来(标记中的文本成为图像)。
有没有办法做到这一点?
var bmp = BitmapFactory.create(200);
bmp.dispose(function (b) {
try {
b.drawRect(
"100,34", // size
'0,0', // upper-left coordinate
KnownColors.Black, // border color
KnownColors.Cornsilk // fill color
);
b.writeText(
"Parking",
"2,25",
{ color: KnownColors.Black, size: 8, name: 'fontawesome-webfont', });
...
在上面的代码中,边界矩形的宽度“ 100”实际上表示具有少量填充的“ Parking”的位宽。我想要做的是计算矩形的高度和宽度,而不是对其进行硬编码。
答案 0 :(得分:1)
尝试此操作,在单击按钮时无需将标签添加到页面即可查找标签大小
export function onFindButtonTap(args: EventData) {
const button = <any>args.object;
const label = new Label();
label.text = "Hello, found my size?"
label.fontSize = 20;
(<any>label)._setupAsRootView(button._context);
label.onLoaded();
label.measure(0, 0);
console.log(`Width : ${label.getMeasuredWidth()} x Height : ${label.getMeasuredHeight()}`);
}
注意:我还没有机会在iOS上进行测试,请问是否遇到任何问题。