- 浏览: 113975 次
- 性别:
- 来自: 重庆
文章分类
最新评论
一个接着一个的activity,写啊写,调啊调,后来,终于发觉,activity的标题栏好难看,好单调啊。咱们为了吸引用户的眼球,得搞点个性化的东西。
自定义标题栏的方法,网上一搜一大堆,我也稍微提一下,oncreate中加上如下代码就行:
requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
setContentView(view);
getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.title);
这个名为title的layout是这样子的,很简单,就是一个textview,然后有个背景色:
Xml代码
<?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这一项,这个应该在注释<!-- Window attributes -->的下面。
Xml代码
<item name="windowTitleBackgroundStyle">@Android:style/WindowTitleBackground</item>
然后去styles.xml下找到WindowTitleBackground项,
Xml代码
<style name="WindowTitleBackground">
<item name="Android:background">@android:drawable/title_bar</item>
</style>
发现是一个drawable,xml的,里面定义了背景图片。ok,我们知道了,这个是定义titlebar的背景色。
然后,去values下面的themes.xml找到windowContentOverlay,也是属于window attributes。
Xml代码
<item name="windowContentOverlay">@Android:drawable/title_bar_shadow</item>
发现也是个drawable,ok,我们也知道了,这个是定义contentoverlay的背景的。
其实,通过研究我发现,不能填充满的原因是title_container的背景的原因,我们覆盖一下就行了。
首先,写个themes文件
Xml代码
<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代码
<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代码
<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://www.linuxidc.com/Linux/2011-04/34415.htm
发表评论
-
Android Camera 使用小结
2012-03-06 17:07 1433Android Camera 使用小结 Android手 ... -
Android权限说明
2012-03-05 14:12 619程序执行需要读取到安全敏感项必需在androidma ... -
Android Bitmap和Canvas学习笔记
2012-03-05 11:45 718位图是我们开发中最常用的资源,毕竟一个漂亮的界面对用户是最 ... -
详解 Android 的 Activity 组件
2012-02-29 09:24 829Activity 的生命周期 和 J2ME 的 MI ... -
JNI技术与Android应用
2012-02-20 17:08 2751本文转自http://www.cnblogs.com/y ... -
如何发布打包并发布自己的Android应用(APP)
2012-02-20 15:30 712前面讲的都是关于And ... -
Android JNI知识简介
2012-02-16 17:33 762Java Native Interface (JNI)标准是j ... -
Android NDK: Host 'awk' tool is outdated.
2012-02-16 16:27 1127在使用Android NDK进行编译的时候可能会出现 Andr ... -
windows+eclipse+cygwin+cdt+ndk
2012-02-16 15:56 891代码下载 - 公共邮 ... -
WebView使用
2012-02-10 11:43 823WebView使用: Java代码 ... -
Android自定义title bar(标题栏)
2012-02-10 11:40 1184我们在开发程序是经常会需要软件全屏显示、自定义标题(使用按 ... -
Android应用开发中的风格和主题(style,themes)
2012-02-10 11:09 9693越来越多互联网企业都在Android平台上部署其客户端, ... -
Android 对话框(Dialog)大全 建立你自己的对话框
2012-02-10 10:03 749Activities提供了一种方便管理的创建、保存、回复 ... -
PerferenceActivity用法
2012-02-10 10:01 955看到很多书中都没有 ... -
android:webView总结
2012-02-09 15:53 1176android:webView总结 大部分内容为网 ... -
Serializable 和 Parcelable 区别
2012-02-07 17:18 943android 中自定义的对象 ... -
Android中Intent传递对象的两种方法(Serializable,Parcelable)
2012-02-07 17:16 760转载自 http://blog.csdn.net/xyz ... -
Android拟器不能正常上网
2012-01-19 11:18 855启动模拟器后,可能模拟器不能正常上网,需要对模拟器进行设 ... -
Android平台常见属性集合
2012-01-19 10:56 870属性 值 说明 ... -
Android平台常见属性集合
2012-01-19 10:42 1属性 值 说明 android:orientation hor ...
相关推荐
NULL 博文链接:https://venus585625.iteye.com/blog/1261421
android自定义标题栏源码,自定义view
Android自定义标题栏,需要的童鞋可以下来看看。
xamarin android自定义标题栏,希望能够帮助到大家。。
Android自定义顶部标题栏Android自定义顶部标题栏Android自定义顶部标题栏Android自定义顶部标题栏Android自定义顶部标题栏Android自定义顶部标题栏Android自定义顶部标题栏Android自定义顶部标题栏Android自定义...
自定义标题栏 修该 高度 以及 处理没有完全填充bug。
android studio 自定义标题栏,自定义回退按钮事件,自定义右侧显示文字还是图片,自定义右侧点击事件
android 自定义标题栏 CAD如何快速自定义标题栏.docx
Android自定义标题栏(并加入返回按钮)的demo
看IOS上的应用,应用中状态栏的颜色总能与应用标题栏颜色保持一致,用户体验很不错,对于这种效果怎么实现的呢?下面小编给大家分享android自定义状态栏颜色与应用标题栏颜色一致的实现方法,一起看看吧
如题,android自定义标题栏。 http://blog.csdn.net/yanjunhui2011/article/details/64482976 对应资源
Android实现自定义标题栏的高度化自定义
Android复合控件学习之自定义标题栏;学习自定义属性、接口回调等知识点
前段时间android项目中用到一个可以滑动的数量可变的导航栏,在网上也没找到合适的替代品,所以就自定义了个该控件,在此分享一下该控件,给有需要的人。
应用中状态栏的颜色与应用标题栏颜色保持一致,提高用户体验