一篇写的很好的文章,转自:http://www.iteye.com/topic/760314

一个接着一个的activity,写啊写,调啊调,后来,终于发觉,activity的标题栏好难看,好单调啊。咱们为了吸引用户的眼球,得搞点个性化的东西。
        自定义标题栏的方法,网上一搜一大堆,我也稍微提一下,oncreate中加上如下代码就行:

Java代码  
  1. requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
  2. setContentView(view);
  3. getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.title);

这个名为title的layout是这样子的,很简单,就是一个textview,然后有个背景色:

Xml代码  
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:orientation="vertical"
  4. android:layout_width="fill_parent"
  5. android:layout_height="fill_parent"
  6. android:background="#66cccccc"
  7. >
  8. <TextView
  9. android:layout_width="fill_parent"
  10. android:layout_height="wrap_content"
  11. android:text="hello"
  12. />
  13. </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代码  
  1. <item name="windowTitleBackgroundStyle">@android:style/WindowTitleBackground</item>

然后去styles.xml下找到WindowTitleBackground项,

Xml代码  
  1. <style name="WindowTitleBackground">
  2. <item name="android:background">@android:drawable/title_bar</item>
  3. </style>

发现是一个drawable,xml的,里面定义了背景图片。ok,我们知道了,这个是定义titlebar的背景色。

然后,去values下面的themes.xml找到windowContentOverlay,也是属于window attributes。

Xml代码  
  1. <item name="windowContentOverlay">@android:drawable/title_bar_shadow</item>

发现也是个drawable,ok,我们也知道了,这个是定义contentoverlay的背景的。
    其实,通过研究我发现,不能填充满的原因是title_container的背景的原因,我们覆盖一下就行了。

首先,写个themes文件

Xml代码  
  1. <resources>
  2. <style name="XTheme" parent="android:Theme">
  3. <!-- Window attributes -->
  4. <item name="android:windowTitleStyle">@style/XWindowTitle</item>
  5. <item name="android:windowTitleBackgroundStyle">@style/StatusBarBackground</item>
  6. <item name="android:windowContentOverlay">@null</item>
  7. </style>
  8. </resources>

然后写styles文件

Xml代码  
  1. <resources>
  2. <style name="StatusBarBackground">
  3. <item name="android:background">@drawable/shape</item>
  4. </style>
  5. <style name="XWindowTitle" parent="android:WindowTitle">
  6. <item name="android:shadowColor">#BB000000</item>
  7. <item name="android:shadowRadius">0</item>
  8. </style>
  9. </resources>

注意这个XWindowTitle要继承WindowTitle。

最后,在manifext中给自定义的activity申明主题。

Xml代码  
  1. <activity android:name=".Entry"
  2. android:label="@string/app_name"
  3. android:theme="@style/XTheme">
  4. <intent-filter>
  5. <action android:name="android.intent.action.MAIN" />
  6. <category android:name="android.intent.category.LAUNCHER" />
  7. </intent-filter>
  8. </activity>

好,我们来看看效果吧:

so cool, isn't it?

当然,你也可以换成别的颜色或者是更炫的图片做背景。

转载于:https://www.cnblogs.com/qingblog/archive/2012/09/03/2668542.html

解决android自定义标题充满的问题相关推荐

  1. 解决Android自定义相机预览和照片分辨率差异的问题

    两种解决方式:1.找到和屏幕分辨率最匹配的PictureSize和PreviewSize(本文使用这种方式) 2.先取比屏幕分辨率大的PreviewSize和PictureSize最后生成图片的时候按 ...

  2. Android之自定义标题

    我们知道我们创建的每一个Activity,系统默认为我们提供了一下黑色的标题,本篇我将带领大家接触一下如何实现自定义标题样式.相比系统为我们提供的样式,自定义标题可以满足我们唯心所欲的自定义设计,使我 ...

  3. android分享的主标题,Android 自定义标题栏(title栏)

    近日 需要在android的标题栏上添加按钮,所以对android的标题栏进行了一下简单的研究- 第一步,向实现自定义标题栏,需要在onCreate方法里这样写 requestWindowFeatur ...

  4. android 自定义actionbar前面有一块空白,解决Android V7后自定义Toolbar、ActionBar左侧有空白问题...

    如图所示: 1.查看Wiget.AppCompat.Toolbar的parent主题,如下所示: @style/TextAppearance.Widget.AppCompat.Toolbar.Titl ...

  5. Android 自定义拍照,解决图片旋转,拍照参数设置兼容问题

    Android 自定义拍照,解决图片旋转,拍照参数设置兼容问题 参考文章: (1)Android 自定义拍照,解决图片旋转,拍照参数设置兼容问题 (2)https://www.cnblogs.com/ ...

  6. Android 解决通过自定义设置打开热点后手机搜索不到热点的问题。

    Android 解决通过自定义设置打开热点后手机搜索不到热点的问题. 参考文章: (1)Android 解决通过自定义设置打开热点后手机搜索不到热点的问题. (2)https://www.cnblog ...

  7. Android微信浏览器标题,企业微信内H5网页分享微信好友ios正常安卓自定义标题、图标、未生效...

    企业微信内H5网页分享微信好友ios正常安卓自定义标题.图标.未生效 问题类型 API/组件名称 终端类型 微信版本 基础库版本 Bug 'onMenuShareWeibo', 'onMenuShar ...

  8. Android 自定义view完全解析--带你通透了解自定义view

    参考转自郭霖博客带你一步步深入了解View系列 Android LayoutInflater原理分析 相信接触Android久一点的朋友对于LayoutInflater一定不会陌生,都会知道它主要是用 ...

  9. android自定义view获取控件,android 自定义控件View在Activity中使用findByViewId得到结果为null...

    转载:http://blog.csdn.net/xiabing082/article/details/48781489 1.  大家常常自定义view,,然后在xml 中添加该view 组件..如果在 ...

最新文章

  1. Android权限申请的学习实践
  2. 微服务系列 —— 一小时搞定Eureka
  3. C 语言指针与汇编地址(一)
  4. 斗战神 刷图电罗刹攻略
  5. python 键盘输入一个整数、输出它的千位与百位_Python编程习题
  6. 增强版的RecycleViewAdapter,能够直接使用
  7. 最大乘积java_在Java中查找负数的最大乘积
  8. 安装vs2008出现MSI returned error code 1603的错误的解决
  9. Unity常见问题(二)数组索引越界
  10. 人工智能——单层感知器
  11. Layui 后台管理模板 【Y-Admin】
  12. 【Windows安装RabbitMQ详细教程】
  13. 洛谷P1273 有线电视网 题解
  14. 使用Office Tool Plus安装office、visio、project等--很实用
  15. 针对Object和Array深拷贝处理
  16. Entity Framework Code First使用者的福音 --- EF Power Tool使用记之一
  17. 前端之文本、长度、颜色、字体、背景-36
  18. vps搭建代理ip服务
  19. vue-time-slot 一款基于vue3的会议预约时间组件,时间轴为早7-晚11,可自由选择,并且非常方便。
  20. linux图像显示(五)使用freetype处理矢量字体

热门文章

  1. 在线英文名随机生成器
  2. 在线中文繁简体转换工具
  3. 《Kotlin项目实战开发》第5章 函数与函数式编程
  4. [cb]ScriptableObject 序列化
  5. jquery气泡提示效果
  6. Windows 7 beta 1补充汉化文件
  7. 06.大厂面试题:请讲下SpringBoot的日志框架原理
  8. 管理赚得多还是程序员多_程序员如何为自己开辟出更多的收入渠道
  9. 加个ing是什么意思_用quot;ing形式quot; 统称 动名词 和 现在分词 可以吗
  10. java大津法确定阈值,大津法得到自适应阈值