1

でAppceleratorのがAndroidとiOSプラットフォームの高さIは、Appceleratorのチタンフレームワークとアプリをテストしようと思い、私は、画面上のビューを中央にあります。チタンピクセルとDP

私のindex.xml:

<Alloy> 
<!-- Anddroid Window --> 
<Window id="index" platform="android"> 
    <Require type="view" id="firstscreen" src="firstscreen"/> 
</Window> 

<!-- iOS Window --> 
<NavigationWindow id="nav" platform="ios"> 
    <Window id="win1" backgroundColor="white"> 
     <Require type="view" id="firstscreen" src="firstscreen"/> 
    </Window> 
</NavigationWindow> 

firstscreenのxml:

<Alloy> 
 
\t <ScrollView scrollingEnabled="false" contentWidth="Ti.UI.FILL"> 
 
\t \t <ImageView class="fullBgImage" image="/images/login/bg2.png" /> 
 
\t \t <View layout="vertical"> 
 
\t \t \t <View id="loginView" class="heightAuto" layout="vertical"> 
 
\t \t \t \t <ImageView id="localImage" image="/images/logo.png" /> 
 
\t \t \t \t <Label class="logoLabel" text="Karma" /> 
 
\t \t \t \t <Label class="logoSlogan" text="Faits confiance à votre Karma pour booster votre carrière" /> 
 
\t \t \t \t <View class="btn btnVert" onClick="openCandidat"><Label class="btnLabel" text="Je recherche un job" /></View> 
 
\t \t \t \t <View class="btn btnBlanc" ><Label class="btnLabel bleu" text="Je suis recruteur" /></View> 
 
\t \t \t </View> 
 
\t \t </View> 
 
\t </ScrollView> 
 
</Alloy>

index.js: 式達成するためには、次のとおりviewTopPosition =(platformheight - viewheight)/ 2

if (OS_ANDROID) { 
 
\t $.index.addEventListener('open', after_win_load); 
 
\t $.index.open(); 
 
} else { 
 
\t $.nav.addEventListener('open', after_win_load); 
 
\t $.nav.open(); 
 
} 
 

 
function after_win_load() { 
 
\t // Platform height 
 
\t var platformHeight = Ti.Platform.displayCaps.platformHeight; 
 
\t // The view 
 
\t var firstscreen = $.firstscreen; 
 
\t /* Taille du logo */ 
 
\t firstscreenViewHeight = firstscreen.loginView.size; 
 
\t /* Centrer la vue verticalement */ 
 
\t firstScreenTop = platformHeight - firstscreenViewHeight.height; 
 
\t //firstscreen.top = firstScreenTop; 
 
\t 
 
\t var style = $.createStyle({ 
 
\t \t classes : 'firstScreenTop', 
 
\t \t apiName : 'View', 
 
\t \t top : firstScreenTop/2 
 
\t }); 
 

 
\t firstscreen.loginView.applyProperties(style); 
 
}

IOSオン見栄えが良く、視界は垂直に立てられていますが、アンドロイD:私はアンドロイドであることを知っている

<property name="ti.ui.defaultunit" type="string">dp</property>

:Ti.Platform.displayCaps.platformHeightは私がすでに指定された私のtiapp.xmlファイルに1920

=大きすぎるピクセル値であり、ピクセルユニットですが、iOSはdpユニットを使用していますので、どうすればいいですか?誰かがアイデアを持っている? は今のところAndroid用私は

var platformHeight = Ti.Platform.displayCaps.dpi;

var platformHeight = Ti.Platform.displayCaps.platformHeight;

を置き換えしかし、それはすべてのAndroidの画面解像度のために良いだろう場合、私は自分自身を頼みますか?これがベストプラクティスならば?

ありがとうございます。

答えて

5
var densityFactor = OS_IOS ? 1 : Ti.Platform.displayCaps.logicalDensityFactor; 

var platformHeight = Ti.Platform.displayCaps.platformHeight/densityFactor; 

か、直接ビューを中央しかしから50%にそれをプッシュしないであろう50%に直接トップを設定し、50%

var style = $.createStyle({ 
    classes : 'firstScreenTop', 
    apiName : 'View', 
    top : "50%" 
}); 
+0

こんにちは、応答のための おかげにトップを設定することができますスクリーントップ、または私は間違っていますか? – user44321

+1

1) 'Ti.Platform.displayCaps.logicalDensityFactor'は、最近のSDKのiOSでも利用できます。 2)実際には、これは50%ダウンします。 3)コンポジション/アブソリュートレイアウト(デフォルト)のデフォルトは、子供をセンタリングするためのものです。 –

+0

それは素晴らしいです。どうもありがとうございました。 – Kerberos

関連する問題