引言:我们做的大部分应用,一般都需要在标题栏里放一些控件,这时候安卓系统的标题栏就不能达到我们的需求。因此安卓允许开发者自定义标题栏的样式,大小,背景等属性。下面我们详细介绍下,安卓自定义标题栏的详细步骤:
一、在res文件夹下,创建一个drawable文件夹,在drawable文件夹中创建一个xml文件(名字可以自己随便取,这里我取为title.xml)。
1、 title.xml文件的内容:
<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient
android:angle="270"
android:endColor="#FFFFFF"
android:startColor="#000000"/>
<padding
android:left="2dip"
android:top="2dip"
android:right="2dip"
android:bottom="2dip"/>
</shape>
这里的这篇xml内容是被我修改过的,读者可以从开发者文档Drawable目录下找到原文。
2、title.xml文件的作用:
在xml文件中,开发者可以自定义标题栏的宽度,背景颜色等属性,做法可以参考xml中的内容。
二、在values文件夹下,String.xml文件中定义一个<drawable name="nocolor">#00000000</drawable>,为了下面定义标题栏透明时候用。
三、在values文件夹下找到styles.xml文件,没有的话,自己手动创建一个。
1、 styles.xml文件的内容:
<resources xmlns:android="http://schemas.android.com/apk/res/android">
<!--自定义风格,继承AndroidTheme-->
<style name="myTheme" parent="android:Theme">
<item name="android:windowContentOverlay">@drawable/nocolor</item> <!-- 设置自定义标题栏透明 -->
<item name="android:windowTitleSize">44dip</item> <!-- 设置自定义标题栏的高度-->
<item name="android:windowTitleBackgroundStyle">@style/myBackg</item>
</style>
<style name="myBackg">
<item name="android:background">@drawable/title</item>//引入自定义的title.xml文件
</style>
</resources>
这个主题风格是笔者自己定义的,当然读者也可以根据个人喜好,重新设置标题栏的风格。
2、 styles.xml文件的作用:
styles.xml文件,是用来自定义标题栏的主题风格的(定义了自己的主题风格,会覆盖安卓默认的主题风格)。
四、在layout文件夹下创建一个布局文件,用来添加标题栏中的组件。
五、我们需要在setContentView(R.layout.activity_main);之前,请求自定义标题栏。代码如下:
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
setContentView(R.layout.activity_main);
getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE,R.layout.titlelayout);//引入layout文件下的布局文件
}
红色代码用来请求自定义标题栏。
六、在安卓权限文件application节点中引入自定义的主题风格(styles.xml):
<activity
android:name="com.example.titlewinsettest.MainActivity"
android:theme="@style/myTheme"
> <!-- 引入自定义的主题风格myTheme -->
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
红色代码引入自定义的主题风格文件(xml)。