2017-06-14 43 views
0

我最近將5.5.1 titanium SDK中的appcelerator項目升級到了6.1.0。Appcelerator Android中的ListView自定義模板中的鈦錯誤

Android上列表視圖的自定義模板在6.1.1中的行爲與5.5.1以及我以前使用過的所有鈦版本的行爲有所不同。問題是在垂直佈局視圖內嵌套水平佈局視圖。

在此錯誤示例中,列表視圖顯示英文水果的名稱,然後水平顯示法文,德文和西班牙文翻譯,但在英文名稱下方顯示。

從附圖中可以看出,iPhone版本顯示正確,但Android版本的翻譯缺失。 Titanium 5.5.1和更早版本在兩個平臺上均正確顯示。

在自定義模板中,我使用了背景顏色以便輕鬆查看每個視圖和標籤的顯示位置。

有誰知道爲什麼在Android版本中缺少字幕?這是一個鈦錯誤還是我做錯了什麼?

下面是其正確顯示圖像iPhone:enter image description here

下面是它有字幕缺失enter image description here

這裏的一切重現了Android的bug所需的代碼Android的圖像。確保您使用的鈦6.1.0 SDK

var win = Ti.UI.createWindow({backgroundColor: 'white'}); 

// Create a custom template that displays the English title, then three 
// subtitles for French, German & Spanish laid out horizontally below the 
// English title 
var myTemplate = { 
    properties: { 
     height: Ti.UI.SIZE, 
     width: Ti.UI.FILL 
    }, 
    childTemplates: [ 
     { 
      type: 'Ti.UI.View', 
      properties: { 
       backgroundColor: '#fcf', 
       height: Ti.UI.SIZE, 
       layout: 'vertical', 
       left: 15, 
       right: 15, 
       width: Ti.UI.FILL 
      }, 
      childTemplates: [ 
       {       // English 
        type: 'Ti.UI.Label',  // Use a label for the text 
        bindId: 'english',  // Maps to the english property of the item data 
        properties: {   // Sets the label properties 
         color: 'black', 
         font: { fontFamily:'Arial', fontSize: '20dp', fontWeight:'bold' }, 
         left: 0 
        } 
       }, 
       {        // Container for language subtitles 
        type: 'Ti.UI.View', 
        properties: { 
         backgroundColor: '#ffc', 
         height: Ti.UI.SIZE, 
         layout: 'horizontal', // subtitles should be laid out horiznontally 
        }, 
        childTemplates: [ 
         {       // French 
          type: 'Ti.UI.Label',  // Use a label for the text 
          bindId: 'french',  // Maps to the french property of the item data 
          properties: {   // Sets the label properties 
           backgroundColor: 'gray', 
           color: 'white', 
           font: { fontFamily:'Arial', fontSize: '14dp' }, 
           right: 10 
          } 
         }, 
         {       // German 
          type: 'Ti.UI.Label',  // Use a label for the text 
          bindId: 'german',  // Maps to the german property of the item data 
          properties: {   // Sets the label properties 
           backgroundColor: 'red', 
           color: 'white', 
           font: { fontFamily:'Arial', fontSize: '14dp' }, 
           right: 10 
          } 
         }, 
         {       // Spanish 
          type: 'Ti.UI.Label',  // Use a label for the text 
          bindId: 'spanish',  // Maps to the spanish property of the item data 
          properties: {   // Sets the label properties 
           backgroundColor: 'blue', 
           color: 'white', 
           font: { fontFamily:'Arial', fontSize: '14dp' }, 
           right: 10 
          } 
         } 
        ] 
       } 
      ] 
     } 
    ] 
}; 

// Create the list view 
var listView = Ti.UI.createListView({ 
    templates: { 'template': myTemplate }, 
    defaultItemTemplate: 'template', 
    top: Ti.Platform.osname === 'iphone' ? 20 : 0 // Allow for iOS status bar 
}); 

// Create the list data set 
var fruitSection = Ti.UI.createListSection({ headerTitle: 'Fruits'}); 
var fruitDataSet = [ 
    { english: {text: 'Apple'}, french: {text: 'Pomme', visible: true}, german: {text: 'Apfel'}, spanish: {text: 'Manzana'}}, 
    { english: {text: 'Banana'}, french: {text: 'Banane'}, german: {text: 'Banane'}, spanish: {text: 'Plátano'}} 
]; 
fruitSection.setItems(fruitDataSet); 

// Add the data set to the list view 
var sections = [fruitSection]; 
listView.setSections(sections); 

// Add the list view to the main window and open it 
win.add(listView); 
win.open(); 
+0

嘗試設置後listView.setSections(部分)fruitSection.setItems(fruitDataSet)。 – Umair

回答

0

Appcelerator的有固定的這個在鈦SDK 6.1.1.v20170615113917