如何控制android标题栏

如何很好的控制android的标题栏,前段时间其实我实现过部分,但是仅限于把标题栏视图增加几个等。今天突然想变变色,但发现不能全填充,网上找了下,综合说明一下。

 

android标题栏用的视图是:

<LinearLayout xmlns:android=”http://schemas.android.com/apk/res/android
    android:orientation=”vertical”
    android:fitsSystemWindows=”true”>
    <!– Popout bar for action modes –>
    <ViewStub android:id=”@+id/action_mode_bar_stub”
              android:inflatedId=”@+id/action_mode_bar”
              android:layout=”@layout/action_mode_bar”
              android:layout_width=”match_parent”
              android:layout_height=”wrap_content” />

    <FrameLayout android:id=”@android:id/title_container”
        android:layout_width=”match_parent”
        android:layout_height=”?android:attr/windowTitleSize”
        style=”?android:attr/windowTitleBackgroundStyle”>
    </FrameLayout>
    <FrameLayout android:id=”@android:id/content”
        android:layout_width=”match_parent”
        android:layout_height=”0dip”
        android:layout_weight=”1″
        android:foregroundGravity=”fill_horizontal|top”
        android:foreground=”?android:attr/windowContentOverlay” />
</LinearLayout>
其实我们能够改变的是“content”,具体操作是:

Window win = getWindow();   
win.requestFeature(Window.FEATURE_CUSTOM_TITLE);

win.setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.title);

其中R.layout.title用来替换content(具体是替换还是成为子view没有研究).

 

注意到每个activity都有一个android:theme=”@style/maintheme”,我们可以通过控制这个来控制整个android的显示,标题栏自然不言而喻。

<?xml version=”1.0″ encoding=”utf-8″?>
<resources>
 <style name=”maintheme” parent=”android:style/Theme”>
  <item name=”android:windowTitleStyle”>@style/XWindowTitle</item>     
        <item name=”android:windowTitleBackgroundStyle”>@style/StatusBarBackground</item>       
        <item name=”android:windowContentOverlay”>@null</item>
    </style>
</resources>

 

 <style name=”StatusBarBackground”> 
        <item name=”android:background”>#000000</item> 
    </style>        
    <style name=”XWindowTitle” parent=”@android:style/TextAppearance.WindowTitle”> 
        <item name=”android:shadowColor”>#BB000000</item> 
        <item name=”android:shadowRadius”>0</item> 
    </style> 

 

这样便能很好地完成任务