롤리팝에서 기기 회전시 TabGroup 메뉴가 회전되지 않도록 하고 싶습니다.

안녕하세요?

현재 개발 중인 앱에서 TabGroup을 사용하여 메뉴를 만들고 있습니다.
tiapp.xml과 소스코드 내에서 PORTRAIT 모드로만 동작하도록 세팅하고 빌드하여
IOS, 안드로이드 4.1.2 젤리빈, 안드로이드 5.0.1 / 5.0.2 롤리팝에서 테스트하고 있는데
유독 롤리팝에서는 기기를 회전하면 TabGroup 메뉴가 회전합니다.

롤리팝에서 TabGroup이 회전되지 않도록 하려면 어떻게 해야 되는지요?

현재 소스코드 내에서 orientation을 고정하기 위해 사용한 코드를 발췌하면 아래와 같습니다.

  • tiapp.xml

< iphone>
    < orientations device=“iphone”>
        < orientation>Ti.UI.PORTRAIT</ orientation>
    </ orientations>
    < orientations device=“ipad”>
        < orientation>Ti.UI.PORTRAIT
    </ orientations>
</ iphone>

<! – 이 부분부터는 build/android/AndroidManifest.xml의 일부를 복사하여 tiapp.xml에 붙여넣고 android:screenOrientation="portrait"를 추가한 것입니다 -->

< application android:icon="@drawable/appicon" android:label=“OOOOOOO” android:name=“OOOOOOOApplication” android:debuggable=“false” android:theme="@style/Theme.AppCompat">
  < activity android:screenOrientation=“portrait”
       android:name=".OOOOOOOOActivity"
       android:label="@string/app_name"
       android:theme="@style/Theme.Titanium"
       android:configChanges=“keyboardHidden|orientation|screenSize”>
    < intent-filter>
      < action android:name=“android.intent.action.MAIN”/>
      < category android:name=“android.intent.category.LAUNCHER”/>
    </ intent-filter>
  </ activity>
  
  < activity android:screenOrientation=“portrait”
       android:name=“org.appcelerator.titanium.TiActivity”
       android:configChanges=“keyboardHidden|orientation|screenSize”/>
      
  < activity android:screenOrientation=“portrait”
       android:name=“org.appcelerator.titanium.TiTranslucentActivity”
       android:configChanges=“keyboardHidden|orientation|screenSize”
       android:theme="@style/Theme.AppCompat.Translucent"/>
      
  < activity android:screenOrientation=“portrait”
       android:name=“ti.modules.titanium.ui.android.TiPreferencesActivity”
       android:configChanges=“screenSize”/>
      
  < activity android:screenOrientation=“portrait”
       android:name=“ti.modules.titanium.media.TiCameraActivity”
       android:configChanges=“keyboardHidden|orientation|screenSize”
       android:theme="@style/Theme.AppCompat.Translucent.NoTitleBar.Fullscreen"/>
  
  < service android:name=“com.appcelerator.analytics.APSAnalyticsService” android:exported=“false”/>
</ application>

  • 소스코드에서 TabGroup의 각 Tab에 할당한 window 생성 코드

var win = Titanium.UI.createWindow({
    orientationModes: [ Ti.UI.PORTRAIT ],
});

해결 방법을 아시면 도움을 부탁드립니다.
감사합니다.

안녕하세요.^^ @blueminz 님 tidev.kr 첫 질문 반갑습니다.~

개별적으로 윈도우와 TabGroup에 지정하면 됩니다.

안드로이드의 경우 Activity에 해당하는 객체에만 Orientation을 지정가능합니다. TabGroup의 경우 TabGroup자체가 Activity가 되기 때문에 TabGroup에 orientationModes를 지정하면 됩니다.

특정버전에서 다르게 동작한다는 것은 분명 잘못된 일입니다만 탭그룹과 관련되서 안될때는 TabGroup에 지정해보세요. Android Menu 나 ActionBar역시 Tabgroup의 경우 같은이유에서 Tabgroup에 지정해야합니다.(이부분은 문서에 있어요.^^)

Alloy의 경우아래 처럼 사용해서 잘 작동합니다.

"TabGroup" :{
	orientationModes: [Titanium.UI.PORTRAIT]
}
2개의 좋아요

정말 TabGroup에 orientationModes를 설정하니까 회전하지 않네요.
TabGroup의 orientationModes는 매뉴얼에 나와있지 않은 프로퍼티라서 좀 당황스럽기도 합니다. ^^

친절한 도움, 감사드립니다.
좋은 하루 되세요~