안드로이드에서 타이틀바가 안없어집니다

구글에서 이것저것 찾아보면서 나오는 모든 방법을 적용시켜봤는데 잘 안되서 답을 구하고자 글을 써봅니다.

나중엔 '타이타늄 모바일 앱 프로그래밍’책을 보고 만들고 있던지라 역자분에게까지 질문을 드렸었는데 책 내용이 구버젼 티타늄이라 3.3 이후 버젼에서는 다른 방식을 써야 한다고 조언을 주셨습니다. 그래서 조언대로 해봤는데 그래도 해결하지 못한지라 그분께서 이곳을 알려주셨기에 여기에서도 도움을 받아보고 싶습니다.

appcelerator의 액션바 문서를 읽어보고 winHome.activity.actionBar.hide()를 open() 다음에 넣어봤는데 존재하지 않는 메소드라는 오류가 뜹니다.

그래서 2번째 방법인 xml파일을 추가하는 방식을 해봤습니다만 1단계의 파일을 어떤 위치에 넣어야 정상적으로 작동을 하는지 도저히 알 수가 없었습니다.

Resource폴더 안에서 style 폴더를 만들어 넣어보거나 platform/android/res/values/custom_theme.xml의 경로 그대로 폴더를 만들어 넣어봤지만 계속해서
/Users/kim/Documents/Titanium_Studio_Workspace/MaMa/build/android/AndroidManifest.xml:4: error: Error: No resource found that matches the given name (at ‘theme’ with value ‘@style/Theme.NoActionBar’). 오류가 발생했습니다.

그래서 build 폴더에 해당 경로를 들어가서 넣어봤지만 실행할 때마다 초기화를 해서 계속 지워지더군요. 물론 2단계인 tiapp.xml파일에 내용을 추가하는 건 이미 처리를 해놨습니다.

저도 계속 다른 방법을 시도해보고 싶지만 마감이 1주일밖에 남지 않아서 급하게 글을 써봅니다.

혹시 소스파일을 보고자 하신다면 바로 공개해 드리겠습니다.

아래 글에 나온방법으로 하면 모두 잘 됩니다. 여기에 상세히 설명되어 있습니다.

위 링크에 나온 방법 3가지중에 첫번째가 actionbar.hide()를 이용하는 방법입니다.
winHome.activity.actionBar.hide()open() 다음이 아니라 윈도우의 open 이벤트가 발생한 이후에 해야합니다.

아래처럼 해야합니다.

win.addEventListener("open", function() {
    if (Ti.Platform.osname === "android") {
        if (! win.activity) {
            // Ti.API.error("Can't access action bar on a lightweight window.");
        } else {
            actionBar = win.activity.actionBar;
            if (actionBar) {
                win.activity.hide();
            }
        }
    }
});

이 방법은 actionbar가 open될때 살짝 보이는 문제가 있습니다. 사실 actionbar.show 나 hide는 이미 열린 window의 actiobar를 보였다 안보였다 할때 쓰게됩니다.

Theme을 이용한 방법을 추천합니다.

디자인 적으로 없이 쓰고 싶은 거면 위 블로그 글에 나와있는 3번 방법을 추천합니다. 테마 설정해두고 필요한 윈도우 theme을 지정만 하면 됩니다. (window가 오픈된 이후에는 theme이 적용되지 않습니다.)

테마로 처리하시면 됩니다.

resources/android/res/values/styles.xml

<resources>
    <style name="Theme.NoActionBar" parent="@style/Theme.AppCompat">
        <item name="windowActionBar">false</item>
        <item name="android:windowNoTitle">true</item>
    </style>
</resources>

만들어서 테마 만들고

tiapp.xml 에 추가하면 됩니다

<android xmlns:android="http://schemas.android.com/apk/res/android">
        <manifest>
            <application android:theme="@style/Theme.NoActionBar"/>
        </manifest>
</android>

삽질하고 나니 정이 가네요^^;; 도움되셨길 바랍니다

1개의 좋아요

tiapp.xml애 넣지 않고 window 의 속성으로 tss로 원하는 window에만 적용하는 방법도 있습니다.

@ManDuTim 님. 바로 코드 이쁘게 넣는거 사용해 주셨네요. ㅎ :+1:

넵^^ 커뮤니티사이트가 정말 이쁘네요^^ 저도 한번 사용해봐야겠네요