使用Nativescript更改标签内文本的行高
问题描述:
我试图增加标签内部文本的行高度。 我发现这个代码示例: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')
任何帮助,将不胜感激:)
答
我所注意到的是,你的标签你分配一个ID的方法是不正确的。原因在于,您将为每个具有相同ID的列表视图项目拥有多个ID。您应该为列表视图的项目模板中的标签动态生成不同的ID(例如:通过在末尾为它们提供唯一索引的id-name)。
另一件事是你正在尝试获取onItemLoading中的ID。在加载父视图的事件(在列表视图,父视图,甚至带有onLoaded回调的页面加载事件)中执行此操作。
感谢您的答案。 – Dailyrox
我最终手动建立了整个视图。 – Dailyrox