살구월드

잠깐, 리눅스, C 언어, Java, Python 등
각종 예제 검색하기

안드로이드 관련 포스팅 목록

2020/06/20 - [Android] - [Android] 안드로이드 화면 캡처 방지(Screen Capture Restriction)

2020/06/21 - [Android] - [Android] 안드로이드 자동 화면 회전 방지(Auto Screen Rotation Restriction)

2020/06/21 - [Android] - [Android] 안드로이드 인터넷 권한(android internet permission)

 

 

 

 

 

안드로이드 타이틀 바 제거

안녕하세요.
오늘은 안드로이드 앱 개발중에 나타나는 앱 제목(타이틀 바)를 제거하는 방법에 대하여 알아보겠습니다. 이 타이틀 바는 아래와 같이 최초 어플리케이션 프로젝트를 생성하였을 때 맨위에 앱 제목이 나타나는 영역입니다. 

 

 

앱 상단에 위치한 타이틀바

 

하지만 요즘 앱들을 확인해보면 맨위의 이 타이틀 바는 존재하지 않습니다. 이는 따로 설정을 하여 안보이게 처리해주어야 합니다. 제목이 필요한 앱도 있지만 대부분 가독성이나 UI 측면에서 이 타이틀 바는 필요가 없습니다. 따라서 이번 포스팅에서 이러한 타이틀 바를 제거하는 테스트 예제에 대하여 포스팅하겠습니다.

 


최근 안드로이드 버전이 많이 상승함에 따라 아래의 방법으로 타이틀바가 제거되지 않을 수 있습니다. 기존 테마가 많이 수정되었기 때문입니다. 세번째 기재한 기존 테마에 타이틀 제거 구문 추가하는 방식을 사용하는 것을 권장합니다.


 

앱 테마를 수정하여 타이틀바 제거

AndroidManifest.xml 에서 앱 테마를 수정하여 타이틀 바를 제거하는 방법입니다. 아래와 같이 어플리케이션 레벨의 테마를 "No Title Bar"로 수정합니다. 하지만 이 방법은 기존 테마를 완전히 바꾸는 방법이므로 여러 폰트나 배경등이 사라지거나 안보이는 문제가 발생할 수 있습니다. 따라서 이런 문제가 발생하지 않도록 Activity의 테마를 AppCompat 테마로 수정해주어야 합니다. 이렇게 되면 상단의 타이틀 바가 모두 사라지게 됩니다. 

 

기존 내용에서 수정된 내용과의 차이점을 확인해보세요.

 

 

[기존 AndroidManifest.xml 내용]

   - <application> 태그의 android:theme 속성이 "@stytle/Apptheme"로 되어있다.

   - <activity> 태그에 android:theme 속성이 없다.

 

<application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

 

 

 


[수정 후]

   - <application> 태그의 android:theme 속성이 "@android:style/Theme.NoTitleBar"로 수정되었다.

   - <activity> 태그에 android:theme 속성을 추가함.

<application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@android:style/Theme.NoTitleBar">
        <activity android:name=".MainActivity"
            android:theme="@style/Theme.AppCompat">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

 

 

 

 

소스 코드에 윈도우 속성 수정 API를 호출하여 타이틀바 제거

다음으로는 맨 처음 실행되는 Activity에 직접 화면 속성을 수정하도록 API 호출 구현부를 추가하는 것입니다. 이는 이전 포스팅에서 다뤘던 자동 화면 회전 방지 등과 같은 방법입니다. 아래와 같이 API 호출부를 추가하여 실행해보면 타이틀바가 제거된 것을 알 수 있습니다.

 

[추가할 구문]

   - 대부분 레이아웃 생성(super.onCreate(savedInstanceState);) 이전에 호출

requestWindowFeature(Window.FEATURE_NO_TITLE);

 

[MainActivity - onCreate()]

@Override
    protected void onCreate(Bundle savedInstanceState) {
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

 

 

 

기존 테마에 윈도우 타이틀바 제거 구문 추가

위의 방법들은 기존 안드로이드 저버전에서 사용하던 방법이므로 최근 최신 OS 버전의 대상인 앱들은 테마가 많이 수정되어 윈도우 타이틀이 제거되지 않을수있습니다. 이때는 이방법을 사용하여 타이틀바를 제거합니다.

 

안드로이드 프로젝트의 res/values/styles.xml 파일에 아래와 같은 타이틀 제거 구문을 추가합니다.

 

<item name="windowNoTitle">true</item>

 

[기존 styles.xml 내용]

   - <AppTheme> 속성에 "windowNoTitle" 구문이 없다.

<resources>

    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
    </style>

</resources>

[수정 후]

   - <AppTheme> 속성에 "windowNoTitle" 구문 추가

<resources>

    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <!-- Customize your theme here. -->
        <item name="windowNoTitle">true</item>
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
    </style>

</resources>

 

 

마무리 - 타이틀바 제거의 유용성

안드로이드 앱의 타이틀바는 처음 포스팅 시작할 때 설명했던 것처럼 앱의 제목 등의 내용을 설명할 때 사용됩니다. 하지만, 요즘같이 UI에 민감한 앱 사용자들에게는 이러한 타이틀바가 지저분해 보일 수 있는 요소가 많습니다.

이러한 타이틀바를 제거하는 방법이 어렵지 않을까 생각도 되지만 안드로이드에서는 이러한 것들을 쉽게 처리할 수 있도록 API를 제공하고 있습니다.

잠깐, 리눅스, C 언어, Java, Python 등
각종 예제 검색하기

공유하기

facebook twitter kakaoTalk kakaostory naver band