使用Nativescript更改标签内文本的行高

时间:2016-10-10 17:02:02

标签: javascript nativescript

我正在尝试增加标签内文字的行高。 我找到了这个代码示例:https://github.com/NativeScript/NativeScript/issues/1664#issuecomment-218977478

应该做的伎俩,现在我正在努力实现它。

这是我到目前为止所做的:

xml文件(从tabView加载):

<ListView id="news-feed" items="{{ news }}" loaded="onLoaded" itemLoading="onItemLoading" separatorColor="#f4f4f4">
   <ListView.itemTemplate>
   <GridLayout backgroundColor="#f4f4f4">
    <StackLayout tap="openInWebview" class="news-card">
     <Label text="{{ headline }}" textWrap="true" class="headline" />
     <Label id="textLabel" text="{{ lead }}" textWrap="true" />
    </StackLayout>
   </GridLayout>
   </ListView.itemTemplate>
</ListView>

事件itemLoading:

触发的功能
function onItemLoading(args) {
page = args.object;

var myLabel = page.getViewById("textLabel");
labelLineHeight(myLabel)

}

当然,上面链接的Github问题中描述的功能是:

function labelLineHeight(nsLabel) {

// console.dump(nsLabel)


if(page.ios){

    var label = nsLabel.ios;
    var attributedString;

    if(label.attributedText){
        attributedString = label.attributedText;
    }
    else{
        attributedString=NSMutableAttributedString.alloc().initWithString(label.text);
    }
    var paragraphStyle = NSMutableParagraphStyle.alloc().init();
    paragraphStyle.lineSpacing = 5;
    var range= NSMakeRange(0, label.text.length);
    attributedString.addAttributeValueRange(NSParagraphStyleAttributeName, paragraphStyle, range);
    label.attributedText = attributedString;
}
if(page.android){
    var label = nsLabel.android;
    //Default spacing is 20% of text size
    //setLineSpacing(add,multiplyby);
    label.setLineSpacing(12, 1);
}   
}

我收到错误消息:

[45842]: file:///app/mainTabs/tabNews/tabNews.js:40:28: JS ERROR TypeError: undefined is not an object (evaluating 'nsLabel.ios')

任何帮助将不胜感激:)

1 个答案:

答案 0 :(得分:0)

我注意到您为标签分配ID的方式不正确。原因是,对于具有相同ID的每个列表视图项,您将拥有多个ID。您应该在list-view的item模板中为您的标签动态生成不同的ID(例如:通过在末尾为它们提供唯一索引的id-name)。

另一件事是你试图在onItemLoading中获取ID。在父视图的已加载事件中执行此操作(在列表视图,父视图或甚至带有onLoaded回调的页面加载事件)。