Appcelerator - 同一控制器的不同 xml

Appcelerator - Different xml for the same controller

是否可以在同一个控制器中为 iOS 设置一个 xml 并为 Android 设置一个 xml

例如:

我有问题控制器:UIPhoto.js

我想要 2 个不同的 xmltss 文件:UIPhoto-iOS.xmlUIPhoto-Android.xml

并在设备为 iOS 或 Android 时分别充电。

谢谢。

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

但这也许有帮助:

首先,您可以在 index.js 中使用 Ti.Platform.osname; 检测 OS 并确定像这样的全局变量 Alloy.Globals.OS

现在您可以在 js 文件中使用简单的 if 语句切换您的代码:

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

在您的 tss 文件中,您可以像这样区分平台:

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

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

注意 'controllers' 中的 Android 文件夹和 'views' 中的 iOS ;)

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

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