2013-11-26 177 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文件。