锁定老帖子 主题:解决android自定义标题栏充满的问题
精华帖 (0) :: 良好帖 (2) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2010-09-10
最后修改:2010-09-10
一个接着一个的activity,写啊写,调啊调,后来,终于发觉,activity的标题栏好难看,好单调啊。咱们为了吸引用户的眼球,得搞点个性化的东西。 requestWindowFeature(Window.FEATURE_CUSTOM_TITLE); setContentView(view); getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.title); 这个名为title的layout是这样子的,很简单,就是一个textview,然后有个背景色: <?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什么的都用上也不管用,怎么办呢。 去values下面的themes.xml找到windowTitleBackgroundStyle这一项,这个应该在注释<!-- Window attributes -->的下面。 <item name="windowTitleBackgroundStyle">@android:style/WindowTitleBackground</item> 然后去styles.xml下找到WindowTitleBackground项, <style name="WindowTitleBackground"> <item name="android:background">@android:drawable/title_bar</item> </style> 发现是一个drawable,xml的,里面定义了背景图片。ok,我们知道了,这个是定义titlebar的背景色。 然后,去values下面的themes.xml找到windowContentOverlay,也是属于window attributes。 <item name="windowContentOverlay">@android:drawable/title_bar_shadow</item> 发现也是个drawable,ok,我们也知道了,这个是定义contentoverlay的背景的。 首先,写个themes文件
<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文件 <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申明主题。 <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? 当然,你也可以换成别的颜色或者是更炫的图片做背景。 详细实例代码见附件。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2010-09-10
楼主这个方法不错。
|
|
返回顶楼 | |
发表时间:2010-09-10
怎么看源码!
|
|
返回顶楼 | |
发表时间:2010-09-10
zhchzh1000 写道 怎么看源码!
去http://android.git.kernel.org/下或者去网上搜别人下载好的源码包 |
|
返回顶楼 | |
发表时间:2010-09-13
原来自定义的左边多出来空白,是背景图造成的。
lz解释的非常好 |
|
返回顶楼 | |
发表时间:2010-09-13
在Eclipse里面怎么打开源码里面的layout下面的xml文件?
|
|
返回顶楼 | |
发表时间:2010-09-13
sun201200204 写道 在Eclipse里面怎么打开源码里面的layout下面的xml文件?
干嘛要用eclipse打开呢,随便用个编辑器editplus、vim什么的都可以,只是阅读,也不需要检查错误。 |
|
返回顶楼 | |
发表时间:2010-09-26
这个方法好。赞
|
|
返回顶楼 | |
发表时间:2010-12-04
楼主的方法是很好,但是美中不足,怎样去改变他的宽度,怎样把"标题"弄到中间?
|
|
返回顶楼 | |
发表时间:2010-12-06
人家一般界面都是用ui来做的呢~~
|
|
返回顶楼 | |