解决android自定义标题充满的问题
一篇写的很好的文章,转自:http://www.iteye.com/topic/760314
一个接着一个的activity,写啊写,调啊调,后来,终于发觉,activity的标题栏好难看,好单调啊。咱们为了吸引用户的眼球,得搞点个性化的东西。
自定义标题栏的方法,网上一搜一大堆,我也稍微提一下,oncreate中加上如下代码就行:
- 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什么的都用上也不管用,怎么办呢。
看源码!
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 -->的下面。
- <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的背景的。
其实,通过研究我发现,不能填充满的原因是title_container的背景的原因,我们覆盖一下就行了。
首先,写个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?
当然,你也可以换成别的颜色或者是更炫的图片做背景。
转载于:https://www.cnblogs.com/qingblog/archive/2012/09/03/2668542.html
解决android自定义标题充满的问题相关推荐
- 解决Android自定义相机预览和照片分辨率差异的问题
两种解决方式:1.找到和屏幕分辨率最匹配的PictureSize和PreviewSize(本文使用这种方式) 2.先取比屏幕分辨率大的PreviewSize和PictureSize最后生成图片的时候按 ...
- Android之自定义标题
我们知道我们创建的每一个Activity,系统默认为我们提供了一下黑色的标题,本篇我将带领大家接触一下如何实现自定义标题样式.相比系统为我们提供的样式,自定义标题可以满足我们唯心所欲的自定义设计,使我 ...
- android分享的主标题,Android 自定义标题栏(title栏)
近日 需要在android的标题栏上添加按钮,所以对android的标题栏进行了一下简单的研究- 第一步,向实现自定义标题栏,需要在onCreate方法里这样写 requestWindowFeatur ...
- android 自定义actionbar前面有一块空白,解决Android V7后自定义Toolbar、ActionBar左侧有空白问题...
如图所示: 1.查看Wiget.AppCompat.Toolbar的parent主题,如下所示: @style/TextAppearance.Widget.AppCompat.Toolbar.Titl ...
- Android 自定义拍照,解决图片旋转,拍照参数设置兼容问题
Android 自定义拍照,解决图片旋转,拍照参数设置兼容问题 参考文章: (1)Android 自定义拍照,解决图片旋转,拍照参数设置兼容问题 (2)https://www.cnblogs.com/ ...
- Android 解决通过自定义设置打开热点后手机搜索不到热点的问题。
Android 解决通过自定义设置打开热点后手机搜索不到热点的问题. 参考文章: (1)Android 解决通过自定义设置打开热点后手机搜索不到热点的问题. (2)https://www.cnblog ...
- Android微信浏览器标题,企业微信内H5网页分享微信好友ios正常安卓自定义标题、图标、未生效...
企业微信内H5网页分享微信好友ios正常安卓自定义标题.图标.未生效 问题类型 API/组件名称 终端类型 微信版本 基础库版本 Bug 'onMenuShareWeibo', 'onMenuShar ...
- Android 自定义view完全解析--带你通透了解自定义view
参考转自郭霖博客带你一步步深入了解View系列 Android LayoutInflater原理分析 相信接触Android久一点的朋友对于LayoutInflater一定不会陌生,都会知道它主要是用 ...
- android自定义view获取控件,android 自定义控件View在Activity中使用findByViewId得到结果为null...
转载:http://blog.csdn.net/xiabing082/article/details/48781489 1. 大家常常自定义view,,然后在xml 中添加该view 组件..如果在 ...
最新文章
- Android权限申请的学习实践
- 微服务系列 —— 一小时搞定Eureka
- C 语言指针与汇编地址(一)
- 斗战神 刷图电罗刹攻略
- python 键盘输入一个整数、输出它的千位与百位_Python编程习题
- 增强版的RecycleViewAdapter,能够直接使用
- 最大乘积java_在Java中查找负数的最大乘积
- 安装vs2008出现MSI returned error code 1603的错误的解决
- Unity常见问题(二)数组索引越界
- 人工智能——单层感知器
- Layui 后台管理模板 【Y-Admin】
- 【Windows安装RabbitMQ详细教程】
- 洛谷P1273 有线电视网 题解
- 使用Office Tool Plus安装office、visio、project等--很实用
- 针对Object和Array深拷贝处理
- Entity Framework Code First使用者的福音 --- EF Power Tool使用记之一
- 前端之文本、长度、颜色、字体、背景-36
- vps搭建代理ip服务
- vue-time-slot 一款基于vue3的会议预约时间组件,时间轴为早7-晚11,可自由选择,并且非常方便。
- linux图像显示(五)使用freetype处理矢量字体