2016-10-10 68 views
0

我试图增加标签内部文本的行高度。 我发现这个代码示例:https://github.com/NativeScript/NativeScript/issues/1664#issuecomment-218977478使用Nativescript更改标签内文本的行高

这应该做的伎俩,现在我试图实现它。

这是我到目前为止有:

XML文件(从TabView的加载):

function onItemLoading(args) { 
page = args.object; 

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

} 

和:

<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所触发的功能当然在上面链接的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') 

任何帮助,将不胜感激:)

回答

0

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

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

+0

感谢您的答案。 – Dailyrox

+0

我最终手动建立了整个视图。 – Dailyrox