Appcelerator — разные xml для одного и того же контроллера

Возможно ли иметь один xml для iOS и один xml для Android для одного и того же контроллера?

Например:

У меня есть контроллер очереди: UIPhoto.js

и я хочу иметь 2 разных файла xml и tss: UIPhoto-iOS.xml и UIPhoto-Android.xml

и заряжайте каждый, когда устройство iOS или Android.

Спасибо.


person amurcia    schedule 05.02.2016    source источник


Ответы (3)


Да, это возможно и довольно просто! Вам просто нужно иметь другую папку для конкретной платформы, на которую вы хотите ориентироваться. Представьте, что у вас есть файл index.xml внутри папки Views, верно? Вы можете кодировать свой xml так, как вы привыкли, и если вам нужен другой файл для Android (скажем), вам просто нужно создать папку внутри папки «Views» с именем Android. Проверьте это изображение со структурой папок:

Структура папок Alloy

Обратите внимание на папку Android в «контроллерах» и iOS в «представлениях»;)

person Carlos Zinato    schedule 05.02.2016
comment
Ооо, спасибо, это то, что я ищу. В следующий понедельник попробую. Большое спасибо. Если все будет хорошо, я отмечу ваш ответ зеленой галочкой. - person amurcia; 05.02.2016

Вы можете использовать папку для конкретной платформы в своих представлениях

controllers   
--- UIPhoto.js
views
--- android
------ UIPhoto.xml
--- iOS
------ UIPhoto.xml

но я рекомендую вам использовать tss, а не использовать 2 xml и 2 tss.
например, в вашем tss:

"Window[platform=ios]":{
   fullscreen : true
}

"View[platform=android]" :{
   elevation : 8
}
"View[formFactor=tablet]" :{
   elevation : 8
}
"View[platform=android formFactor=handheld]" :{
   elevation : 8
}

и для вашего контроллера:

if(OS_IOS){
}
if(OS_ANDROID){
}
person David Loekito    schedule 06.02.2016

Я не думаю, что вы можете переключать файл xml или файл tss, когда устройство iOS или Android.

Но, может быть, это полезно:

Прежде всего, вы можете определить ОС с помощью Ti.Platform.osname; в вашем index.js и оценить глобальную переменную, подобную этой Alloy.Globals.OS.

Теперь вы можете переключать свой код с помощью простых операторов if также в файле js с помощью:

if(Alloy.Globals.OS == "android"){...}

В вашем файле tss вы можете различать платформу следующим образом:

"#title[platform=android]" : {
    font : { textStyle : Ti.UI.TEXT_STYLE_HEADLINE }
}
person Giordano    schedule 05.02.2016
comment
Спасибо, я знаю эти варианты. Я только хочу знать, существует ли этот вариант, который я упомянул. - person amurcia; 05.02.2016
comment
Я не уверен, но, возможно, вы можете использовать «require (namefile)». Вы пробовали этот вариант? - person Giordano; 05.02.2016