Appcelerator - 同一控制器的不同xml

时间:2016-02-05 11:40:49

标签: appcelerator appcelerator-titanium appcelerator-alloy

对于同一个控制器,iOS可以有一个xml,Android有一个xml吗?

例如:

我有que控制器:UIPhoto.js

我希望有2个不同的xmltss个文件:UIPhoto-iOS.xmlUIPhoto-Android.xml

并在设备为iOS或Android时为每个设备充电。

谢谢。

3 个答案:

答案 0 :(得分:4)

是的,这是可能的,而且非常简单! 您只需要为要定位的特定平台设置不同的文件夹。 想象一下,你在Views文件夹中有index.xml文件,对吧? 你可以按照自己的惯例对xml进行编码,如果你想要一个不同的Android文件(让我们说),你只需要在里面创建一个文件夹" Views"文件夹名为Android。使用文件夹结构检查此图像:

Alloy folder structure

注意'控制器'中的Android文件夹。和iOS中的观点' ;)

答案 1 :(得分:2)

您可以在视图中使用特定于平台的文件夹

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){
}

答案 2 :(得分:0)

当设备是iOS或Android时,我认为您无法切换xml文件或tss文件。

但也许这很有帮助:

首先,您可以在index.js中检测到Alloy.Globals.OS的操作系统,并对此if(Alloy.Globals.OS == "android"){...} 这样的全局变量进行定价。

现在,您可以使用简单的if语句在js文件中使用:

切换代码
"#title[platform=android]" : {
    font : { textStyle : Ti.UI.TEXT_STYLE_HEADLINE }
}

在你的tss文件中,你可以像这样:

MessageProducer.send()