티스토리 뷰
타이틀바를 내 취향대로 변경하고 싶다. 안드로이드 3.0부터 제공하는 action bar에서 이것저것 기능을 추가할 수 있는 것 같은데...
아무튼 내 개발버전 2.3 에 맞게 커스텀 타이틀바를 만들어 사용하겠다.
- 타이틀바 레이아웃 그리기
- 어플리케이션 관리자에 공용으로 사용할 커스텀 타이트바 세팅 함수 만들기
- 액티비티에 커스텀 타이틀바 달기
- 타이틀바에 테마 적용하기
타이틀바 레이아웃 그리기
<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">
댓글