1.對指定的android activity設定自定義主題風格,其中自定義主題風格是關鍵,在android 4.0以上版本中如果使用Theme.Holo或者Theme.Light等,程式會一直報錯誤-you cannot combine custom title with other
feature titles。
2. 在對應的Activity中加入程式碼
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
setContentView(R.layout.main);
getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE,R.layout.mycustomtitle);
3.在styles.xml使用如下的自定義主題,發現只有使用這個預設主題才不出第一步的
錯誤
<resources> <style name="WindowTitleBackground" > <item name="android:background">@color/blue</item> </style> <style name="MyTheme" parent="android:Theme"> <item name="android:windowTitleSize">60dp</item> <item name="android:windowTitleBackgroundStyle">@style/WindowTitleBackground</item> </style> </resources>
4. 使用RelativeLayout來對齊自定義Title的元件
二:測試MainActivity原始碼
package com.gloomyfish.titledemo; import android.app.Activity; import android.os.Bundle; import android.view.Window; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_CUSTOM_TITLE); setContentView(R.layout.main); getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE,R.layout.mycustomtitle); } }
三:XML資原始檔
mycustomtitle.xml:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_gravity="fill_horizontal" android:orientation="horizontal" android:layout_height="fill_parent" > <Button android:id="@+id/header_left_btn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_marginLeft="5dp" android:layout_centerVertical="true" android:text="返回" android:textColor="#000000"/> <TextView android:id="@+id/header_text" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_toRightOf="@+id/header_left_btn" android:layout_toLeftOf="@+id/header_right_btn" android:text="My Title Bar" android:textSize="20sp" android:textStyle="bold" android:textColor="#FFFFFF" android:gravity="center" android:layout_centerHorizontal="true" android:layout_centerVertical="true" android:singleLine="true" /> <Button android:id="@+id/header_right_btn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_marginRight="5dp" android:layout_centerVertical="true" android:text="圖片" android:textColor="#000000"/> </RelativeLayout>
最後別忘記在androi的manifest配置檔案中加上自定義的主題:
android:theme="@style/MyTheme"
同時還要刪除IDE預設生成的那些appTheme,不然也會一直報錯!
最終效果如下:
實現這個自定義標題欄的時候,看到stackoverflow上面說
如果使用Theme.Holo一定要換成Theme.Holo.NoActionBar主題
可以我換了以後發現,一直不出效果。
所以我推薦一定要使用android:theme