Android 自定义TitleBar替换ActionBar的另类方式

来源:互联网 发布:易建联卧推数据 编辑:程序博客网 时间:2024/05/23 11:33

titleBar自定义布局common_title_view.xml

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" 
    >
 
    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_alignParentLeft="true"
        android:src="@drawable/abc_ic_clear_mtrl_alpha" />
    <TextView
        android:id="@+id/title"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_centerInParent="true"
        android:text="@string/app_name"
        android:textColor="@android:color/white"
        android:gravity="center"
        android:textSize="20sp"
        android:textStyle="bold" />
 
    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_alignParentRight="true"
        android:src="@drawable/abc_ic_search_api_mtrl_alpha" />
</RelativeLayout>

Activity中代码

?
1
2
3
4
5
6
7
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    getWindow().requestFeature(Window.FEATURE_CUSTOM_TITLE);
    setContentView(R.layout.activity_animation);
    getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.common_title_view);
}

因为在Android 3.0开始有了ActionBar,因为我们需要将此Activity的主题放置在values中和values-11中的styles.xml中

values/styles.xml

?
1
2
3
4
5
6
7
  <style name="WindowTitleBackground" >     
        <item name="android:background">@color/material_deep_teal_500</item>         
    </style>  
    <style name="MyTheme" parent="android:Theme">  
        <item name="android:windowTitleSize">50dip</item>  
        <item name="android:windowTitleBackgroundStyle">@style/WindowTitleBackground</item>                  
    </style>

values-11/styles.xml

?
1
2
3
4
5
6
7
8
 <style name="MyBaseTheme" parent="android:Theme">  
        <item name="android:windowTitleSize">50dp</item>  
        <item name="android:windowTitleBackgroundStyle">@style/WindowTitleBackground</item>                  
    </style>  
     
  <style name="MyTheme" parent="MyBaseTheme">  
        <item name="android:windowActionBar">false</item> 
    </style>

清单文件

?
1
2
3
4
<activity
            android:name="com.example.androidtest.CustomTitleBarActivity"
            android:label="@string/app_name"
            android:theme="@style/MyTheme"/>

运行效果

视图层解析,通过这种方式,是的titleBar与ContentView并列,使得ContentView布局更加简便和随意

0 0