android自带的标题栏有点丑,开发时基本上都要重写自己的标题栏,下面是一点介绍。
在继承Activity的类,onCreate函数中,super.onCreate(savedInstanceState)函数调用之后,设置自定义标题栏,如
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);//1
setContentView(R.layout.activity_main);//2
getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE,R.layout.m_title_button);//3
}
注意123三步顺序不能错,R.layout.m_title_button是我定义的XML布局文件,如下:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<Button
android:id="@+id/add_dict"
android:layout_width="60dip"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_centerVertical="true"
android:text="上一页"
android:textColor="@color/white"
android:textSize="12dip"
android:background="@drawable/button_bg"
/>
<TextView
android:id="@+id/textview_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:text="标题"
android:textColor="@color/white"/>
<Button
android:id="@+id/title_btn_right"
android:layout_width="60dip"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:text="下一页"
android:textColor="@color/white"
android:textSize="12dip"
android:background="@drawable/button_bg"
/>
</RelativeLayout>
最早时候我是在RelativeLayout属性里头定义了背景的,当时做到这里还没运行之前,以为就已经全部搞定了,内心窃喜,不过运行之后就发现问题了,背景颜色没铺满整个标题栏,怎么办呢?后来百度了好久找到了解决的办法,如下:
项目浏览器里头,res/values/styles.xml里头定义style项,如下
<style name="titlebarstyle" parent="android:Theme">
<item name="android:windowTitleSize">38dip</item>
<item name="android:windowTitleBackgroundStyle">@style/myTitleBarBackground</item>
</style>
<style name="myTitleBarBackground">
<item name="android:background">@drawable/titlebar_bg</item>
</style>
titlebarstyle继承Theme主题样式,设置高度,设置背景项,下面再定义一个背景,然后在项目的AndroidManifest.xml中引用该类型就好,如下:
<activity
android:theme="@style/titlebarstyle"
android:name=".NewWordNote">
</activity>
至此,运行完事。