将样式应用于我的Titanium UI

时间:2013-11-26 06:35:22

标签: titanium titanium-alloy

我刚刚开始使用Appcelerator的钛合金。

如何在我的 controller / index.js 中添加样式,这是代码:

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

我正在 styles / index.tss

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

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

3 个答案:

答案 0 :(得分:10)

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

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

更多阅读Dynamic Styles guide。它没有很好的记录,当我阅读它时,它的某些部分对我来说还不清楚,但它是试验代码并学习Alloy行为的良好起点。

答案 1 :(得分:2)

您的问题似乎在create语句中,您应该使用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": {

答案 2 :(得分:0)

简单的解决方案是添加如下所示的类

person.firstName = "Tom";

$.addClass(yourView, "yourClassName"); 文件中添加您的课程。