一个接着一个的activity,写啊写,调啊调,后来,终于发觉,activity的标题栏好难看,好单调啊。咱们为了吸引用户的眼球,得搞点个性化的东西。
自定义标题栏的方法,网上一搜一大堆,我也稍微提一下,oncreate中加上如下代码就行:
Java代码
requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
setContentView(view);
getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.title);
requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
setContentView(view);
getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.title);
这个名为title的layout是这样子的,很简单,就是一个textview,然后有个背景色:
Xml代码
<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#66cccccc"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="hello"
/>
</LinearLayout>
好,运行看效果。看到了吧,发现问题了没,标题栏的背景色没有填充满是吧,这可真是杯具哟。padding、margin什么的都用上也不管用,怎么办呢。
看源码!
window初始化,加载标题的地方,咱也不知道在哪里,不过咱能以layout作为切入点。打开源码里面的layout文件夹,找跟标题栏相关的xml文件。里面有screen_title.xml和screen_custom_title.xml,这就是咱们要找的目标了。
既然是自定义标题,那我们就看screen_custom_title.xml,里面有一个title_container和一个content,组合成了标题栏,我们自定义标题所给出的view,都被content作为子view了,影响不了那个title_container和content,所以,任你怎么弄,它该留白的还是留白,你没招。
看title_container有个style是这样的:style="?android:attr/windowTitleBackgroundStyle"
content的foreground是这样的android:foreground="?android:attr/windowContentOverlay"
好,从这里我们就可以入手改了。
去values下面的themes.xml找到windowTitleBackgroundStyle这一项,这个应该在注释的下面。
Xml代码
<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><item name="windowTitleBackgroundStyle">@android:style/WindowTitleBackground</item>
然后去styles.xml下找到WindowTitleBackground项,
Xml代码
<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><style name="WindowTitleBackground">
<item name="android:background">@android:drawable/title_bar</item>
</style>
发现是一个drawable,xml的,里面定义了背景图片。ok,我们知道了,这个是定义titlebar的背景色。
然后,去values下面的themes.xml找到windowContentOverlay,也是属于window attributes。
Xml代码
<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><item name="windowContentOverlay">@android:drawable/title_bar_shadow</item>
发现也是个drawable,ok,我们也知道了,这个是定义contentoverlay的背景的。
其实,通过研究我发现,不能填充满的原因是title_container的背景的原因,我们覆盖一下就行了。
首先,写个themes文件
Xml代码
<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><resources>
<style name="XTheme" parent="android:Theme">
<!-- Window attributes -->
<item name="android:windowTitleStyle">@style/XWindowTitle</item>
<item name="android:windowTitleBackgroundStyle">@style/StatusBarBackground</item>
<item name="android:windowContentOverlay">@null</item>
</style>
</resources>
然后写styles文件
Xml代码
<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><resources>
<style name="StatusBarBackground">
<item name="android:background">@drawable/shape</item>
</style>
<style name="XWindowTitle" parent="android:WindowTitle">
<item name="android:shadowColor">#BB000000</item>
<item name="android:shadowRadius">0</item>
</style>
</resources>
注意这个XWindowTitle要继承WindowTitle。
最后,在manifext中给自定义的activity申明主题。
Xml代码
<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><activity android:name=".Entry"
android:label="@string/app_name"
android:theme="@style/XTheme">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
好,我们来看看效果吧:
so cool, isn't it?
当然,你也可以换成别的颜色或者是更炫的图片做背景。
转载: http://tech.it168.com/a2010/0921/1106/000001106990.shtml
分享到:
相关推荐
经过前四篇的学习,我们能够实现bpmn基本绘图、预览、为节点加事件加颜色等效果,这一篇我们来说,如何自定义左侧工具栏(platter),首先看一下自定义前后效果图对比: 我们本次要实现的目标:基于左侧platter原有...
重制seo机制,全面支持网站、分类、标签、文章、页面等自定义标题、自定义描述、自定义关键词。安装新主题后,请重新设置SEO选项 优化右侧栏头像小工具,默认都显示。只有在转载形式时,隐藏。 优化原创、投稿、转载...
新增黑色导航配色,很炫酷新增网页加载过度效果重制seo机制,全面支持网站、分类、标签、文章、页面等自定义标题、自定义描述、自定义关键词。安装新主题后,请重新设置SEO选项优化右侧栏头像小工具,默认都显示。...
如果是转载自其它站点的文章:添加自定义栏目:reprinted,值:原文章的链接地址。 ■ 密码保护的文章 默认有密码保护的文章,部分内容会显示出来。可以在文章编辑框下的摘要中随意输入一些内容即可。 ■ 下载...
注:此模式适用于自定义布局的网站,有一栏、二栏、三栏自由组合,可按需要在代码中删掉排行榜上部的显示内容。 (五种模式介绍:http://otcms.com/newsShow.asp?dataID=67) 九、非常人性化的交互操作,减少你...
1、支持4种次页显示样式:上标题下摘要、左图右摘要、上图下标题、分类列表 2、支持设置次页的显示数量 3、支持单页面,即次页不是列表模式,而是直接显示内容; 三、内容页--文章管理模块: 1、可在后台文章...
1、支持4种次页显示样式:上标题下摘要、左图右摘要、上图下标题、分类列表 2、支持设置次页的显示数量 3、支持单页面,即次页不是列表模式,而是直接显示内容; 三、内容页--文章管理模块: 1、可在...
支持自定义页眉站点 Logo,未设置时默认显示站点标题文字。 轻松地添加您的社交链接到页眉和页脚。 前台所有页面页尾预留统计代码位置*(隐藏显示)*,可直接在后台进行设置。 评论样式支持默认评论及多说,多说样式...
2、编写判断页面是否可以前进后退,浏览页面时动态分析网页标题,时时改变程序Caption。 3、完善了[启动信使]菜单项,逻辑管理信使。 4、添加[启动语音]菜单项,提供语音接口,无声与有声共存,用户除了...
2、编写判断页面是否可以前进后退,浏览页面时动态分析网页标题,时时改变程序Caption。 3、完善了[启动信使]菜单项,逻辑管理信使。 4、添加[启动语音]菜单项,提供语音接口,无声与有声共存,用户...
2、编写判断页面是否可以前进后退,浏览页面时动态分析网页标题,时时改变程序Caption。 3、完善了[启动信使]菜单项,逻辑管理信使。 4、添加[启动语音]菜单项,提供语音接口,无声与有声共存,用户...
15.我们在右下角的属性栏里将字体大小由9 改为15。 16.我们拖动标签一角的蓝点,将全部文字显示出来。 17.再次按下运行按钮,便会出现helloworld。 到这里helloworld 程序便完成了。 Qt Creator 编译的程序,在其...