您的位置:首页 > 移动开发 > Android开发

Android自定义标题栏

2014-09-14 20:17 99 查看
引言:我们做的大部分应用,一般都需要在标题栏里放一些控件,这时候安卓系统的标题栏就不能达到我们的需求。

因此安卓允许开发者自定义标题栏的样式,大小,背景等属性。下面我们详细介绍下,安卓自定义标题栏的详细步骤:

一、在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)。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: