목차
Activity 변경
안드로이드 어플을 작성하다 보면 타이틀바의 모양을 변경하거나 타이틀바에 메뉴를 추가해야 하는 경우가 있습니다. 이럴 경우 Activity 와 테마 변경만으로 모든 작업을 완료할 수 있습니다.
참고로 AppCompatActivity 는 Activity 를 상속받은 클래스로 타이틀바의 다양한 기능을 쉽게 사용할수 있게 해줍니다.
환경: Android Version : 3.1
Activity 화면

AppCompatActivity

MainActivity.java 에서 변경
public class MainActivity extends Activity 를
public class MainActivity extends AppCompatActivity 로 변경합니다.
import android.support.v7.app.AppCompatActivity; 추가합니다.
import android.support.v7.app.AppCompatActivity;
........
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 액션바 라벨 수정
getSupportActionBar().setTitle("ACTIONBAR");
//액션바 배경색 변경
getSupportActionBar().setBackgroundDrawable(new ColorDrawable(0xFF339999));
//홈버튼 표시
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}
}
Android Support Library 설치
기존에는 SDK Manager 에서 버전에 맞는 SDK 를 찾아 설치를 해야했는데,
최신버전에서는 build.gradle 파일에 아래와 같이 내용을 추가하면 됩니다.
dependencies {
compile 'com.android.support:appcompat-v7:25.3.1'
}
styles.xml 수정 및 생성
value 폴더에 styles.xml 파일을 수정합니다. 만약 파일이 없다면 생성해줍니다.
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
</style>
<style name="AppTheme.NoActionBar">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
</style>
<style name="AppTheme.ActionBar">
<item name="windowActionBar">true</item>
<item name="windowNoTitle">false</item>
</style>
</resources>
AndroidManifest.xml
AndroidManifest.xml 에서 아래와 같이 테마를 추가(또는 변경)합니다.
AppTheme.ActionBar 는 액션바를 사용, AppTheme.NoActionBar 는 액션바를 사용하지 않습니다.
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="eee.eee.whiteat"
android:versionCode="1"
android:versionName="1.0">
<uses-permission android:name="android.permission.INTERNET" />
<application
android:allowBackup="true"
android:theme="@style/AppTheme"
android:label="@string/app_name">
<activity
android:name=".ClientActivity"
android:label="@string/app_name"
android:theme="@style/AppTheme.ActionBar" >
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
</application>
</manifest>
에러 종류
You need to use a Theme.AppCompat theme (or descendant) with this activity
AppCompatActivity 만 변경하고 테마를 변경하지 않을 경우 발생하는 에러입니다.
