Android一句代码给Activity定制标题栏
在此之前,使用过几种方法设置标题栏:
1.常规法:这个方法是最常用的了,哪个activity需要什么样的标题栏,就在对应的xml布局设计。缺点:此方法维护起来困难,没有将标题栏的共性抽取出来,
如果要统一修改所有activity的标题栏的背景颜色,这将是一个不小的工作量;
2.自定义控件:标题栏一般包含了左边的返回键,中间的标题,有时右边会有“保存”的TextView,自定义TextView,把这几个需要的控件封装成一个View,
暴露设置标题、点击事件等方法。此方法的缺点,就是必须在需要用到的xml中添加此自定义view;
3.抽象方法:创建activity的基类,基类的布局就单纯的包含了标题栏,在不同的子类去扩展。缺点:基类必须独立,如果基类包含了其他的属性(如关闭动画),
那么此基类并不适合于所有的activity。
因此,抽空写了一个管理类,将标题栏写在特定的布局,用特定的类进行封装,并暴露对应的方法给调用。此外,管理类还有一个功能,将标题栏和内容布局合并
在一起,使用者(activity)完全只需要一句代码即可完成。
1.创建标题栏布局
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/ac_base_toolbar"
android:layout_width="match_parent"
android:layout_height="@dimen/top_bar_height"
android:background="@color/city_tabbar_color" >
<LinearLayout
android:id="@+id/ll_ac_base_toolbar_left"
android:layout_width="@dimen/delivery"
android:layout_height="match_parent"
android:layout_alignParentLeft="true"
android:clickable="true"
android:gravity="center_vertical"
android:onClick="closingEntrustSendActivity" >
<ImageView
android:id="@+id/iv_ac_base_toolbar_left"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/topbar_img_left"
android:visibility="gone" />
<TextView
android:id="@+id/tv_ac_base_toolbar_left"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/topbar_img_left"
android:clickable="true"
android:textColor="@color/ll_default_color"
android:textSize="@dimen/me_tv_size"
android:visibility="gone" />
</LinearLayout>
<TextView
android:id="@+id/tv_ac_base_toolbar_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:textColor="@color/ll_default_color"
android:textSize="@dimen/max_size" />
<LinearLayout
android:id="@+id/ll_ac_base_toolbar_right"
android:layout_width="@dimen/delivery"
android:layout_height="match_parent"
android:layout_alignParentRight="true"
android:clickable="true"
android:gravity="center_vertical" >
<TextView
android:id="@+id/tv_ac_base_toolbar_right"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="@dimen/topbar_img_left"
android:clickable="true"
android:textColor="@color/ll_default_color"
android:textSize="@dimen/me_tv_size"
android:visibility="gone" />
<ImageView
android:id="@+id/iv_ac_base_toolbar_right"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/topbar_img_left"
android:visibility="gone" />
</LinearLayout>
</RelativeLayout>
2.创建管理类
3.activity调用
R.layout.activity_policy_type这个布局就是activity本身需要的布局。实现的原理很简单,创建这个activity的一个LinearLayout,把标题栏布局和内容显示的布局添加上去,然后把
标题栏的一些属性设置暴露方法给调用。每个activity需要用到的标题栏只需简单的几行代码即可。不过也是有一定的缺点,比如页面内容丰富的情况下,页面出现过度渲染。
最新文章
- CSS笔记
- s
- hd 2112 HDU Today
- Windows Store App 文件选取器
- android 第一个程序的编写
- [转]使用VC/MFC创建一个线程池
- PHP文件处理类
- class str
- 网站在域名前面添加logo小图标
- LinQ—Lambda表达式
- SOAP web service用AFNetWorking实现请求
- php中include文件夹分析
- 一些提高开发效率的 Category
- Python之路第十天,高级(2)-多线程,多进程,协程
- 使用bat批处理命令打包maven项目
- OpenCV学习(1) OpenCV的安装
- memcache学习使用
- NGUI出现Shader wants normals, but the mesh UIAtlas doesn&;#39;t have them
- 51nod_1298:圆与三角形(计算几何)
- 【转】软件开发工具介绍之 6.Web开发工具
热门文章
- 关于 iOS 的 StoryBoard,接受的那一刻才发现她的美 - 当然美的事物都须要业心照料
- 导入别人的Android项目,提示 /Libs/gen already exists but is not a source folder. Convert to a source folder or rename it
- 移动端和PC端有什么区别
- 解决多次异步请求紊乱问题 - JavaScript
- es的forcemerge——按照天分割
- java抛出异常后,后续代码是否可继续执行
- bzoj 4571 美味 —— 主席树
- Java-Runoob-高级教程-实例-字符串:10. Java 实例 - 测试两个字符串区域是否相等-uncheck
- vim带你装逼带你飞(二)
- java多线程模拟龟兔赛跑