我在Appcelerator中对属性字符串进行了一些努力,并希望得到一些帮助。
所以,我有几个场景。
我使用API来检索用户信息,但应用程序需要在其前面显示带有@的用户名,并且与字符串的其余部分使用不同的颜色。现在这对于开头有用户名的屏幕是可以的,但遗憾的是我不能让它在字符串中间工作。
以下是当前代码:
var attr = Ti.UI.createAttributedString({
text: '@' + text,
attributes: [{
type: Ti.UI.ATTRIBUTE_FOREGROUND_COLOR,
value: '#ff3333',
range: [text.indexOf(userToHighlight), (userToHighlight).length+1]
}]
});
var notificationMessage = Ti.UI.createLabel({
attributedString: attr,
left: 0,
top: 5,
font: {
fontFamily: 'OpenSans-Light',
fontSize: 13
}
});
这就是输出在不同场景中的样子......
因此,这些字符串的条件如下......
场景1没问题,但是场景2目前看起来像这样......
@您现在是用户名
的朋友所以@开头,主要的问题是我如何将它附加到用户名mid string?
API会返回用户名,我已将其添加到此处的变量中:
var userToHighlight = json[i].participants[1].username;
有关如何实现这一目标的任何想法?
西蒙
答案 0 :(得分:1)
使用String.format()
时,将用户名注入字符串并不难。可以在TiDev上找到一个很好的教程。
基本上:
var message = String.format('Welcome, %s! You are visitor number %d', forename, number);
在您的情况下,使用变量制作原始文本,然后再将其注入。
var text = "You are now friends with @%s";
var text = "@%s likes your post";
然后在属性字符串中:
text: String.format(text, userToHighlight)