钛/合金:在调整屏幕大小时重新应用样式

时间:2017-03-20 12:43:19

标签: titanium appcelerator appcelerator-titanium titanium-alloy

我有一些基本的风格,如:

<?php
    $youKeysFetchedFromDb = array("12_01", "01_02"); //suppose

    foreach($youKeysFetchedFromDb as $value){
        echo $hourshow[$value];
    }

"#foo": { backgroundColor: '#ff0000', // red } "#foo[if=Alloy.Globals.isSmallHeight]": { backgroundColor: '#0000ff', // blue } 我有以下内容:

alloy.js

这基本上意味着如果屏幕高度小于或等于function pxToDp(px){ return px / (Titanium.Platform.displayCaps.dpi / 160); } var screenWidth; var screenHeight; if (Ti.Platform.name == "android") { screenWidth = pxToDp(Ti.Platform.displayCaps.platformWidth); screenHeight = pxToDp(Ti.Platform.displayCaps.platformHeight); } else { screenWidth = Ti.Platform.displayCaps.platformWidth; screenHidth = Ti.Platform.displayCaps.platformHeight; } Alloy.Globals.isSmallHeight= screenHeight <= 545; #foo的背景颜色为蓝色,否则为红色。

这通常可行。但是,有时屏幕的高度可能会在运行时发生变化。例如:

  • 屏幕方向更改
  • 多窗口(在Android上)
  • 在多窗口模式(Android)下调整分割器位置

问题在于,不会重新应用样式以考虑新的屏幕宽度和屏幕高度。

例如,假设在纵向位置有一个大小为545dp的屏幕。 600dp x 300dp将正确地具有红色的背景颜色。

但是,如果方向发生变化,屏幕尺寸现在为:#foo,但300dp x 600dp不会重新检查背景颜色的高度,因此仍然是红色而不是蓝色。< / p>

进入分屏时会出现类似的问题。

因此我的问题是,如何在屏幕尺寸发生变化时重新应用样式?

1 个答案:

答案 0 :(得分:1)

查看文档中的dynamic styles部分

它将为您提供有关如何在运行时创建样式并应用它们的基本概念。您可以在方向更改事件

中执行此操作