티스토리 뷰

타이틀바를 내 취향대로 변경하고 싶다. 안드로이드 3.0부터 제공하는 action bar에서 이것저것 기능을 추가할 수 있는 것 같은데...

아무튼 내 개발버전 2.3 에 맞게 커스텀 타이틀바를 만들어 사용하겠다.

  1. 타이틀바 레이아웃 그리기
  2. 어플리케이션 관리자에 공용으로 사용할 커스텀 타이트바 세팅 함수 만들기
  3. 액티비티에 커스텀 타이틀바 달기
  4. 타이틀바에 테마 적용하기

타이틀바 레이아웃 그리기

<RelativeLayout   xmlns:android="http://schemas.android.com/apk/res/android"  android:layout_width="fill_parent"  android:layout_height="fill_parent"  android:background="#D6A9B4"   android:id="@+id/sample12_titlebar"  android:fitsSystemWindows="true"  >
	  <TextView  	android:layout_width="wrap_content"
  	android:layout_height="wrap_content"
   	android:id="@+id/sample12_tv_title"
  	android:textSize="25sp"
  	android:textColor="#000000"  />
    <Button
         android:id="@+id/sample12_btn"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:textSize="25sp"
         android:text="btn"
          android:textColor="#000000"
         android:background="#D6A9B4"
          android:onClick="myClick"
          android:layout_alignParentRight="true"/></RelativeLayout>

어플리케이션 관리자에 공용으로 사용할 커스텀 타이트바 세팅 함수 만들기

	public void customTitleBar(String title, Activity activity){
			activity.getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE,  R.layout.sample12_titlebar);
			TextView tv_title = (TextView)activity.findViewById(R.id.sample12_tv_title);
			tv_title.setText(title);
			}

액티비티에 커스텀 타이틀바 달기

	@Override	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		myManager = MyManager.getMyManager();
		//check if custom title is supported BEFORE setting the content view!
		customTitleSupported = requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
				//set contentview
		setContentView(R.layout.sample12_a);
						//set custom titlebar
		if (customTitleSupported){
			myManager.customTitleBar("My title", this);
		}
		//customTitleBar("My title");
	}

타이틀바에 테마 적용하기

타이틀바에 스타일을 따로 적용시키지 않으면 타이틀바의 높이가 기본값으로 나와서 레이아웃이 제대로 보이지 않는다. (??)

/res/values/themes.xml

<resources>	<style name="CustomTitleTheme" parent="android:Theme">
		<item name="android:windowTitleSize">50dip</item>
		<item name="android:windowTitleBackgroundStyle">@style/WindowTitleBackground</item>
	</style>
	<style name="WindowTitleBackground" parent="android:WindowTitleBackground">
		<item name="android:background">@android:color/transparent</item>
	</style></resources>

AndroidManifest.xml

    <application android:icon="@drawable/icon" android:label="@string/app_name"
                    android:theme="@style/CustomTitleTheme">

댓글