我正在尝试增加标签内文字的行高。 我找到了这个代码示例: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')
任何帮助将不胜感激:)
答案 0 :(得分:0)
我注意到您为标签分配ID的方式不正确。原因是,对于具有相同ID的每个列表视图项,您将拥有多个ID。您应该在list-view的item模板中为您的标签动态生成不同的ID(例如:通过在末尾为它们提供唯一索引的id-name)。
另一件事是你试图在onItemLoading中获取ID。在父视图的已加载事件中执行此操作(在列表视图,父视图或甚至带有onLoaded回调的页面加载事件)。