1. 程式人生 > >Android使用CustomTitle定製標題欄4.0以上的解決辦法

Android使用CustomTitle定製標題欄4.0以上的解決辦法

</pre><pre name="code" class="html"><!--Atomu's theme-->
    <style name="AppThemeWithCustomTitle" parent="Theme.AppCompat.Light.DarkActionBar">
        <item name="android:headerBackground">@color/blue</item>
        <item name="android:windowActionBar">false</item>
        <item name="android:windowTitleSize">50dp</item>
        <item name="android:windowTitleBackgroundStyle">@style/TitleBarStyle</item>
    </style>

    <style name="TitleBarStyle">
        <item name="android:background">@color/blue</item>
    </style>

首先改變theme, 去掉預設標題欄

super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
        setContentView(R.layout.activity_picture_flow);
        getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.actionbar_picture_flow);

然後在activity中使用自定義的佈局替換標題

新的標題欄中的控制元件只能從該activity中獲取, activity下的fragment無法獲取

另一種方法就是在theme中使用noTitle屬性去掉標題欄然後完全使用自定義......這樣的話按選單鍵會報NullPointerE

@Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_MENU) {
            return true;
        }
        return super.onKeyDown(keyCode, event);
    }

xception, 使用這段程式碼遮蔽掉選單鍵