作者:liukun321 咕唧咕唧
日期:2014.2.25
转载请标明出处:http://blog.csdn.net/liukun321Google 给的示例程序,标题栏丑陋的不忍直视,今天就来看看怎么换掉谷歌的标题栏,并且在标题栏中加入自己的控件。先来看下效果:
搜索按钮被按下后的显示效果如下图:
标题栏的布局,并不是在app的main xml中添加布局信息的,需要在AndroidManifest.xml
指定标题栏的style
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/lk_theme"
theme项中的style和标题栏布局有关 这样首先需要顶一下面的style.xml文件
如下所示:
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android">
<style name="android_themeStyle" >
<item name="android:background">@drawable/pinchelisthead_bg</item>
</style>
<style name="lk_theme" parent="android:Theme">
<item name="android:windowTitleSize">50dp</item>
<item name="android:windowTitleBackgroundStyle">@style/android_themeStyle</item>
</style>
</resources>
红色代码指定标题栏的背景图片(就是那片漂亮的绿色树叶)
蓝色代码指定标题栏宽度,并指定标题栏风格为自定义android_themeStyle。
Android 标题栏 加入按钮控件步骤:
1、 首先要有一个跟title相关的布局文件,这里用我的例子,命名为title.xml
<?xml version="1.0"encoding="utf-8"?>
<RelativeLayoutxmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
>
<Button android:id="@id/titleButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/button1"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
/>
</RelativeLayout>
在这个布局文件中用了Relativelayout 这是一种相对布局,允许子元素指定它们相对于其父元素或兄弟元素的位置,这是实际布局中最常用的布局方式之一。它灵活性大很多,当然属性也多,操作难度也大,属性之间产生冲突的的可能性也大,使用相对布局时要多做些测试。标题栏的布局通常使用这种灵活性相对大的布局,正因为灵活性高,这样才会布局出令人耳目一新的界面。在这个布局文件中,仅含有一个按钮布局。
下面,我们再做一个button 的 selector,来自定义一个按钮控件的显示界面。
<?xml version="1.0"encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true"android:drawable="@drawable/route_icon_search_f" />
<item android:state_pressed="false"android:drawable="@drawable/route_icon_search"/>
</selector>
上一篇文章已经简单介绍过背景选择器,今天就把它派上用场,这样我们就完成自定义按钮的样式了。
布局文件做好了,下面的工作就是,让它显示在标题栏,并对press事件做出反应,看下面的代码:
protected void onCreate(BundlesavedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
setContentView(R.layout.main);
getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.title);
final Button bt0 = (Button) findViewById(R.id.titleButton);
bt0.setOnClickListener(new View.OnClickListener() {
@Override
publicvoid onClick(View arg0) {
//TODO Auto-generated method stub
System.out.println("searchbutton pressed===================");
}
});
注意那三句红色代码,顺序一定不要颠倒了,如果先指定布局文件的资源,则app会因异常退出。requestWindowFeature作用是启用窗体的扩展特性,而参数则是说明我们要用自定仪的标题栏,
getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE,R.layout.title);
第一个参数是说明要用自定仪的标题栏
第二个参数是指定标题栏的布局文件
OK 标题栏的初步美化工作到这里就完成了。我的title是不是不那么难看了。