2013-11-26 145 views
3

我刚启动Appcelerator的钛合金。将样式应用到我的Titanium UI

我怎样才能添加样式我控制器/ index.js下面的代码:

var title = Titanium.UI.createLabel({ 
    title: "My Label", 
    id: "myLabel" 
}); 

我想这一项上款式/ index.tss

"#myLabel": { 
textAlign: "left", 
right: 15, 
color: '#000', 
font: { fontSize:20 }, 
shadowColor: '#aaa', 
shadowOffset: {x:5, y:5}, 
horizontalWrap: true 
} 

但不幸的是它现在正在工作。任何人都可以教我如何添加样式到我的Titanium UI

回答

10

合金样式会自动应用到通过xml创建的视图。如果要在控制器内创建对象时保持该效果,则必须使用$.UI.create()方法代替Titanium API。在您的情况下,您的代码将如下所示:

var title = $.UI.create('Label', { 
    title: "My Label", 
    id: "myLabel" 
}); 

更多信息请参阅Dynamic Styles guide。它没有很好的记录,当我阅读它时,它的某些部分不清楚,但是试验代码并学习Alloy行为是一个很好的起点。

+0

这就是为什么我现在正在搜索interwebz。样式文档很罗嗦且不明确。 –

+0

这节省了我的搜索时间 – WeMakeSoftware

2

看来你的问题是在创建语句,你应该使用一个text属性,而不是title

var title = Titanium.UI.createLabel({ 
    text: "My Label", 
    id: "myLabel" 
}); 

这样一来,你会看到的标签,但风格不会自动是应用,所以考虑这个选项之一:

<Alloy> 
    <View id="content" class="container"> 
     <Label id="myLabel" text="My Label"/> 
    </View> 
</Alloy> 

  • 如果有可能,在视图中创建您的标签

    ,它会自动将工作在.tss文件中定义的样式"#myLabel",当然,你可以随时在代码更改文本值:

    $.myLabel.text = "New value"; 
    
  • 其他的解决方案将在代码中应用样式:

    var title = Ti.UI.createLabel({ 
        text: "My Label", 
        id: "myLabel" 
    }); 
    var style = $.createStyle({ 
        classes: ['myLabel'] 
        ,apiName: 'Label'}); 
    title.applyProperties(style); 
    

    在这种情况下,在你.tss文件,你需要更换"#myLabel": {".myLabel": {

+0

你的第一个答案是无关的正如你所看到的,我为我的标签声明了一个变量标题,其文本属性设置为“我的标签”。 其次,我不能只是将我的标签添加到视图,因为我有一个会自动创建标签的循环。 第三,你最后的解决方案是可以调用索引中标签的id。tss like this “#myLabel”:{} –

+0

嗨艾伦,所以我认为最后的解决方案对你来说是完美的,而我的意思是你需要替换 '“#myLabel:{ textAlign:”left“, 右:15, 颜色: '#000', 字体:{fontSize的:20}, 则shadowColor: '#aaa', shadowOffset:{X:5,Y:5}, horizo​​ntalWrap:真 }' 为 ' “.myLabel”:{ textAlign设置: “左”,右 :15, 颜色: '#000', 字体:{fontSize的:20}, shadowColor:'#aaa', shadowOffset:{x:5,y:5}, horizo​​ntalWrap:true }' – kabomi

+0

请看我的回答。有$ .UI.create()方法,在Appcelerator文档中没有很好的记录,但完全符合这个用例。 – daniula

0

简单的办法就是添加类像下面,

$.addClass(yourView, "yourClassName"); 

添加类.tss文件。