定制Activity的标题栏(Titlebar)_第1页
定制Activity的标题栏(Titlebar)_第2页
定制Activity的标题栏(Titlebar)_第3页
定制Activity的标题栏(Titlebar)_第4页
定制Activity的标题栏(Titlebar)_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、定制Activity的标题栏原文地址:缺省的情况下,通常见到Activity的标题栏(Titlebar)是这样的(红色框内):HandleContacts是Activity的标题。我们在AndroidManifest.xml中的配置是这样的,<application android:icon="drawable/icon" android:label="string/app_name"> <activity android:name="main1" android:label="app1" >

2、; <intent-filter> <action android:name="ent.action.MAIN" /> <category android:name="ent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name="main2" android:label=""></activity&g

3、t;<activity android:name="main3"></activity></application>android:label="app1" :这个属性就是设置标题栏显示文字的,你设置成app1,那么在显示main1这个Activtiy的时候就会显示app1这个字符串所对应的文字。如果像第二个Activity main2这样设置,设置label为空,那么仍然会有标题栏,而且标题栏是空的,仍然会占据这个位置,如下图所示:。如果像main3这样设置,我们没有设置标题栏的名称,那么默认就是使用应用程序的app

4、_name,比如,你的应用程序名称是:菜单测试,那么在标题栏就显示:菜单测试。有时候,我们希望能改变一下这样单调的状况。比如,要在标题栏中增加一个用于美化界面的图标、增一个输入框或按钮之类的,怎样才能做到这一点呢?我们不妨来看一个实际的例子。1.首先如下创建一个Android项目 2.将图片search.png拖入该项目的res/drawable-mdpi文件夹下。search.png图片的样子是这样的:3.在该项目的res/layout文件夹下,创建一个布局titlebar.xml,这个布局将用于定制Activity的标题栏编辑titlebar.xml,使其内容如下:<?xm

5、lversion="1.0" encoding="utf-8"?><LinearLayout       xmlns:android=""       android:orientation="horizontal"       android:layout_width="fill_parent"   &#

6、160;   android:layout_height="wrap_content">             <ImageView                android:layout_width="wrap_content"  

7、0;             android:layout_height="wrap_content"                android:src="drawable/magnifier"      

8、          android:gravity="bottom"       />       <TextView                 android:layout_width="w

9、rap_content"                 android:layout_height="38dip"                 android:text="string/app_name"   &#

10、160;             android:textColor="#FFFFFFFF"                 android:textSize="14dip"         

11、0;       android:paddingTop="1dip"       />             <EditText                   andro

12、id:id="+id/searchparameter"                   android:layout_width="wrap_content"                  

13、android:layout_height="38dip"                   android:text="ABCDEFGHIJ"                   android:

14、textSize="14dip"                   android:layout_margin="1dip"         />            &

15、#160;    <Button android:id="+id/button"                   android:layout_width="wrap_content"             

16、      android:layout_height="38dip"                   android:text="OK"               

17、0;   android:textSize="14dip"         /></LinearLayout> 在上面的LinearLayout中,增加了以下控件:一个ImageView,用于显示一个图标一个TextView,用于显示应用的名称一个EditText,用于接收输入一个Button,用于测试4.修改CustomizeTitlebar.java,使之如下:public class CustomizeTitlebar extends Act

18、ivity    Override    public void onCreate(Bundle savedInstanceState)           super.onCreate(savedInstanceState);       requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);  &#

19、160;    setContentView(R.layout.main);       getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.titlebar);    以上加粗的两行很重要,而且必须要严格按照上面那样的顺序出现在代码中。即:requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);必须出现在super.onCreate(s

20、avedInstanceState);之后,setContentView(R.layout.main);之前。其意思就是告诉系统,本程序要自己定义Titlebar;getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE,R.layout.titlebar); 则必须出现在setContentView之后,其意思就是告诉系统,自定义的布局是R.layout.titlebar(即,我们前面编写的titlebar.xml)到这里,不妨来运行一下,看看结果如何:我们看到,Titlebar基本上按照我们的意思进行了改变,但也存在着一个缺陷:Titleb

21、ar太窄了,那么怎样改变Titlebar的高度呢?5.要改变Titlebar的高度,我们得先创建styles.xml:编辑styles.xml,使其内容如下:<?xmlversion="1.0" encoding="utf-8"?><resources>         <style name="titlebarstyle"parent="android:Theme">  

22、;                 <item name="android:windowTitleSize">38dip</item>         </style></resources>上面<item name="android:windowTitleSize"

23、;>39dip</item>这一句,就是用来设定Titlebar的高度的。6.在上面的基础上,我们需要修改AndroidManifest.xml中,相应Activity的属性。如下:<?xmlversion="1.0" encoding="utf-8"?><manifestxmlns:android=""      package="com.pat.customizetitlebar"   

24、   android:versionCode="1"      android:versionName="1.0">    <application android:icon="drawable/icon"android:label="string/app_name">        <activity android:na

25、me=".CustomizeTitlebar"                  android:label="string/app_name"                  android:theme="

26、style/titlebarstyle">            <intent-filter>                <action android:name="ent.action.MAIN"/>    &

27、#160;           <category android:name="ent.category.LAUNCHER"/>            </intent-filter>        </activity> 

28、0;  </application>    <uses-sdk android:minSdkVersion="8"/></manifest>注意粗体字是新增上去的,其中的titlebar是在第5步中增加的。现在来看看运行结果: 可以看到结果完全符合了我们的要求。7.我们还可以改变Titlebar的背景颜色。为此我们修改前面的styles.xml,使之如下:<?xml version="1.0" encoding="utf-8"?>

29、;<resources><style name="CustomizedWindowTitleBackgroundColor">           <item name="android:background">#047BF0</item></style><style name="titlebarstyle" parent="android:Theme

30、">           <item name="android:windowTitleSize">38dip</item>           <item name="android:windowTitleBackgroundStyle">style/CustomizedWindowTitleB

31、ackgroundColor</item></style></resources>注意,其中的粗体字是新增加的。项目其他文件,均无需变动。运行结果如下: 8.最后,我们以OK按钮为例来测试Titlebar上的控件的事件响应。为此,修改CustomizeTitlebar.java,使之如下:public class CustomizeTitlebar extends ActivityimplementsOnClickListener     private Button button;    Override    public void onCreate(Bundle savedInstanceState)           super.onCreate(savedInstanceState);       requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);   

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论