Text 如何使用特定字体和字体大小查找文本的位长度

Text 如何使用特定字体和字体大小查找文本的位长度,text,size,nativescript,Text,Size,Nativescript,我正在开发NativeScript JavaScript代码来为地图创建动态文本标记。我有为特定字符串创建标记的代码。我的下一步是获取任何给定的字符串,以位为单位确定其高度和宽度,并创建大小为包含文本的标记 我的问题是在给定文本字符串本身、字体大小和字体系列的情况下,查找文本的大小 看起来getMeasuredWidth可以工作,但在函数返回值之前,必须在页面上加载字符串。在我的例子中,我只需要计算大小;文本不会以其他方式显示在页面上(标记中的文本将成为图像) 有办法做到这一点吗 var bmp

我正在开发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”实际上表示带有少量填充的“停车”的位宽度。我想做的是计算矩形的高度和宽度,而不是硬编码

尝试此操作,在单击按钮时查找标签大小而不将其添加到页面中

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()}`);
}
导出函数onfindbuttonap(args:EventData){
常量按钮=


注意:我还没有机会在iOS上测试它,如果遇到任何问题,请告诉我。

您总是能给出答案!这是一种有趣的方法,似乎很有效。但是…我找不到有关_setupAsRootView()的任何信息。这可能是任何视图,并且该视图已经被加载了吗?在这里,您可以找到关于,这是一个私有方法,如果您了解视图类,您可以使用它。是的,这适用于任何视图,而不仅仅是标签。嗯,这正是我正在查看的页面,但仍然没有找到任何名称。但是,无论哪个视图是我们的,都可以使用它吗ed是否加载了ti?我想在onNavigatedTo中找到文本维度,如果不是在viewModel创建时更早的话。你可以在应用程序启动后的任何时候执行此任务。我已经用Manoj的答案进行了实验,得出结论,它对我有效。诀窍是获取正确对象的_上下文变量。我使用了MapView对象,因此:mapView=page.getViewById(“locMap”);label.\u setupAsRootView(mapView.\u上下文);其中locMap定义为: