菜鸟学Android 之 标题栏美化

作者:liukun321 咕唧咕唧

日期:2014.2.25

转载请标明出处:http://blog.csdn.net/liukun321

Google 给的示例程序,标题栏丑陋的不忍直视,今天就来看看怎么换掉谷歌的标题栏,并且在标题栏中加入自己的控件。先来看下效果:

菜鸟学Android 之 标题栏美化

搜索按钮被按下后的显示效果如下图:

菜鸟学Android 之 标题栏美化

标题栏的布局,并不是在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是不是不那么难看了。

菜鸟学Android 之 标题栏美化

上一篇:《编写高质量Python代码的59个有效方法》——第9条:用生成器表达式来改写数据量较大的列表推导


下一篇:【REACT NATIVE 跨平台应用开发】环境搭建问题记录&&XCODE7模拟器上COMMAND+R失效的几种替换方法