상세 컨텐츠

본문 제목

[안드로이드] Titlebar 없애기 - 내용추가

개발/안드로이드 개발

by 똘똘이박사 2015. 11. 4. 15:44

본문

· 최초작성 : 2015. 11. 03.

· 최종수정 : 2015. 11. 03.

· 작성/수정내용 :

  - Titlebar 없애기

  - 추가내용 : Style.xml 살펴보기




시작하기에 앞서...


아직 ActionBar 와 TitleBar 의 차이점이 정확히 뭔지 잘 모르겠네요...

엄청 해매고 있어서 포스팅도 늦었습니다.

우선 알아본것까지만 정리해 봅니다.



# Title Bar 없애기


안드로이드 어플을 개발하다 보면 각 화면마다 Titlebar 를 달지 않아도 됩니다.

오히려 없는 편이 나은 경우가 더 많죠


그래서 Titlebar를 없애려고 알아 보고 있는데... Actionbar와 혼동이 오기 시작하였습니다.

Titlebar과 Actionbar의 차이가 뭐지.....



속 시원하게 알려주는 강좌나 사이트가 없네요.

느낌으로는 Titlebar의 정적인 기능에 동적인 기능을 부여한 것이

Actionbar 같다는 생각을 자꾸 하게 됩니다만....


암튼 제 목적은 Titlebar를 없애는 것입니다.

여러 강좌를 찾아 봤는데 모두 잘 안되더라구요.

(Android Studio 버전을 1.4로 업그레이드 하고, 기준을 API 19 로 잡아서 그런지....)



테스트 설정

 - Android Studio 1.4 (2015.11.03 최신 업데이트)

 - min SDK : API 19 (Android 4.4 KitKat)

 - 'Empty Activity'



기본적으로 위와 같은 정보로 셋팅하게 되면

MainActivity는 AppCompatActivity 를 상속받게 됩니다.


(인터넷에 많은 글들은 Activity를 상속 받았을 경우를 예로 들고 있어 따라하면 에러가 나더라구요 ㅜㅜ)


이 방법이 최선이라고 생각하지는 않지만

간단하게 AndroidManifest 파일을 수정해서 해결할 수 있는 방법이 있어서 공유합니다.


<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.freehoon.notitlebar01" >

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

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

</manifest>

위의 소스중에

application 속성중 android:theme 속성을 아래와 같이 수정합니다.


android:theme="@style/Theme.AppCompat.NoActionBar"



결과화면은 아래와 같습니다.



    





추가내용


그럼 저 안에는 어떤 내용이 들어 있길래 Titlebar을 삭제 처리 했는지 보려고 합니다.


개발을 오래 해오신 분들은 알고 계신 기능이 있죠

보통 내장 함수들의 내용을 보고 싶을때 쓰는 기능이 있죠.

[Ctrl + 함수명 클릭] 으로 그 내부를 들여다 보는 것이죠


위의 속성값도 같은 방법으로 확인을 해볼 수 있습니다.


[Ctrl]키를 누른체 속성명 위로 마우스를 가지고 가면 아래 그림과 같이

속성이 정의된 파일의 위차가 보이고, 

파란색으로 변한 속성명을 클릭하면 해당 속성이 정의된 부분을 자동으로 불러와 보여줍니다.





해당 부분으로 이동해 보면 속성이 정의된 곳에 커서가 깜빡이고 있습니다.


위의 속성은 이렇게 정의되어 있네요


<style name="Theme.AppCompat.NoActionBar">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
</style>


아하... WindowActionbarBar가 false, windowsNoTitle 가 true.


이 부분을 우리가 따로 정의하여 사용할 수도 있습니다.

그럼 위의 부분을 styles.xml로 복사해서 재사용 해보도록 하겠습니다.


기존 styles.xml파일에 "NoTitle01" 이라고 style를 추가 하였습니다.


<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>

<style name="NoTitle01" parent="Theme.AppCompat.NoActionBar">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
</style>

</resources>


주위할 것은 parent 를 추가하여 어느 속성을 상속 받았는지 적어 줘야 합니다.

(이거 추가 안하면 에러나요...)


그리고 AndroidManifest 파일에서 theme 속성을 아래와 같이 수정합니다.

android:theme="@style/NoTitle01"


그리고 실행해 보면 결과는 이전과 같습니다.

(타이틀바 삭제 설정을 그대로 복사해 왔으니까요 ㅋ)


그럼 여기서 Titlebar 를 다시 보이도록 "windowsNoTitle" 속성을 false 로 변경해 다시 실행해 봅시다

(아 근데 여기서 주위할 점이 있습니다. "windowsActionBar" 속성과 WindowsNoTitle" 속성을 모두 false 로 설정하면 에러가 납니다.

 둘다 true는 괜찮은데 말이죠...)




다시 타이틀바가 나왔습니다!!

엇?? 그런데 이상하네요... 예전에는 색깔도 들어있고 했는데...

그건 우리가 다시 지정을 하면서 "colorPrimary" 등의 속성을 지정하지 않았기 때문입니다.


아래와 같이 속성을 더 추가해 주고 다시 실행해 보았습니다.


<item name="colorPrimary">#33AA11</item>
<item name="colorPrimaryDark">#00FF00</item>
<item name="colorAccent">#0000FF</item>


결과는 아래 화면과 같이 나옵니다.






안드로이드에서 기본적으로 제공하는 색이 개인적으로 맘에 들지만

바꿔야 할 때도 필요 하겠죠? ㅎㅎㅎㅎ

반응형

관련글 더보기