写在前面:

标题栏这个部分,绝大多数App都有,起到一个概括本页面功能的作用,有些标题栏还具有返回上一页等额外功能。

在这里不得不表扬一下苹果的标题栏位设计,简洁美观实用,很有借鉴性

一、项目结构

            

           主要由一个布局文件activity_title.xml和一个构造类TitleBuilder.java组成,布局文件定义标题栏样式,构造类负责设定文字内容,是否显示返回按钮等等。

二、代码设计 

activity_title.xml 由一个绝对布局包裹两个图片控件和一个文本框控件组成

此处使用线性布局嵌套绝对布局,使内容可以更好地居中显示

<pre name="code" class="html"><?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:background="#1B77A8"android:gravity="center_vertical"android:layout_width="match_parent"android:layout_height="50dp"><RelativeLayoutandroid:id="@+id/title_bar"android:paddingLeft="5dp"android:paddingRight="5dp"android:layout_width="match_parent"android:layout_height="wrap_content"><ImageViewandroid:layout_centerVertical="true"android:visibility="gone"android:id="@+id/title_leftIco"android:layout_width="wrap_content"android:layout_height="wrap_content" /><TextViewandroid:id="@+id/title_text"android:textSize="20sp"android:textColor="#ffffff"android:layout_centerInParent="true"android:layout_width="wrap_content"android:layout_height="wrap_content" /><ImageViewandroid:visibility="gone"android:id="@+id/title_rightIco"android:layout_alignParentRight="true"android:layout_width="wrap_content"android:layout_height="wrap_content" /></RelativeLayout>
</LinearLayout>

TitleBuilder.java

/*** Created by PanZhe on 2016/7/22.*/
public class TitleBuilder {private View titleView;private RelativeLayout titleBar;private TextView text;private ImageView leftIco;private ImageView rightIco;/*** 构造方法:用于获取对象* */public TitleBuilder(Activity context){titleView = context.findViewById(R.id.title_bar);text = (TextView)titleView.findViewById(R.id.title_text);titleBar = (RelativeLayout)titleView.findViewById(R.id.title_bar);leftIco = (ImageView)titleView.findViewById(R.id.title_leftIco);rightIco = (ImageView)titleView.findViewById(R.id.title_rightIco);}/*** 用于设置标题栏文字* */public TitleBuilder setTitleText(String titleText){if(!TextUtils.isEmpty(titleText)){text.setText(titleText);}return this;}/*** 用于设置标题栏左边要显示的图片* */public TitleBuilder setLeftIco(int resId){leftIco.setVisibility(resId > 0 ? View.VISIBLE : View.GONE);leftIco.setImageResource(resId);return this;}/*** 用于设置标题栏右边要显示的图片* */public TitleBuilder setRightIco(int resId){rightIco.setVisibility(resId > 0 ? View.VISIBLE : View.GONE);rightIco.setImageResource(resId);return this;}/*** 用于设置标题栏左边图片的单击事件* */public TitleBuilder setLeftIcoListening(View.OnClickListener listener){if(leftIco.getVisibility() == View.VISIBLE){leftIco.setOnClickListener(listener);}return this;}/*** 用于设置标题栏右边图片的单击事件* */public TitleBuilder setRightIcoListening(View.OnClickListener listener){if(rightIco.getVisibility() == View.VISIBLE){rightIco.setOnClickListener(listener);}return this;}
}

三、使用方法

   在需要的地方引入

<include layout="@layout/activity_title"/>

在java代码中使用new方法循环设置参数

public class MainActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);new TitleBuilder(this).setTitleText("测试标题").setLeftIco(R.drawable.left).setLeftIcoListening(leftReturnListener);}private View.OnClickListener leftReturnListener = new View.OnClickListener() {@Overridepublic void onClick(View view) {finish();}};
}

四、效果图

中规中矩,对不对?
大家可以通过修改TitleBuild构造类中的方法来实现自己满意的效果,在这里就不一一列举了

Android 封装标题栏相关推荐

  1. android中的标题栏是什么意思,Android通用标题栏组合控件

    原标题:Android通用标题栏组合控件 快,点击蓝色"字体"关注这个公众号,一起涨姿势 由于项目中经常用到此种组合控件,就封装了下,具体效果看下图,老司机可以绕道哈! 一.主要功 ...

  2. 关于Android封装一个全局的BaseActivity你需要知道的

    关于Android封装一个全局的BaseActivity你需要知道的 1.前言 2.特点 3.代码及说明 3.1.优缺点 3.2.代码 3.3.注意点 4.总结 5.最后 1.前言 对于一个Andro ...

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

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

  4. android封装好的Color类中的常量

    通过android封装好的Color类中的常量 public static final int BLACK = 0xFF000000; public static final int DKGRAY = ...

  5. (转自ztp800201) Android - 自定义标题栏(在标题栏中增加按钮和文本居中)

    现在很多的Android程序都在标题栏上都显示了一些按钮和标题,如下图: 下面通过实例来看一下如何实现. 1.在layout下创建一个titlebtn.xml文件,内容如下: 1 <?xml v ...

  6. android 刷新标题栏,Android 自定义标题栏的实例详解

    Android 自定义标题栏的实例详解 开发 Android APP 经常会用到自定义标题栏,而有多级页面的情况下还需要给自定义标题栏传递数据. 本文要点: 自定义标题填充不完整 自定义标题栏返回按钮 ...

  7. Unity调用Android封装的声网sdk

    文章目录 unity3调用Android 封装的声网SDK 1.环境版本 2.创建Android library 工程 3.unity3D 依赖包添加到工程libs下 4.UnityPlayerAct ...

  8. android标题栏渐变动画,Android 顶部标题栏随滑动时的渐变隐藏和渐变显示效果

    各位早上好,话不多说,先上效果图: 注意顶部:首页textview的变化(显示和隐藏)! 首先分析下:ui状态,其是由recyclerview添加头部组成+recyclerview 头部添加和recy ...

  9. android封装网络请求界面,轻松搞定 android MVP 架构、okHttp 网络模块封装 的 项目...

    CommonMvp commonMvp 能做什么? 1.mvp 实现 model view presenter 业务和界面解耦 2.整合 网络 请求 3.简化网络调用流程 4.整合状态栏和标题栏 实现 ...

  10. android标题栏添加按钮_几行代码实现Android通用标题栏(轻松向左右两侧添加Menu)...

    秦子帅明确目标,每天进步一点点..... 作者 |  丶E 地址 |  https://www.jianshu.com/p/8c15fc4114a7 前言 标题栏是app开发经常用到的东西,几乎每个页 ...

最新文章

  1. 【发现】ASP.NET DEVELOPMENT SERVER 未能开始侦听端口xxxxx以一种访问权限不允许的方式做了一个访问套接字的尝试——解决方法...
  2. Java核心类库-IO-字节数组流/内存流
  3. java事务不生效场景_springboot中使用@Transactional注解事物不生效的坑
  4. 关于Mybatis,我总结了 10 种通用的写法
  5. JavaFX中的塔防
  6. MySQL-回表查询与索引覆盖
  7. CentOS 7.0安装配置Vsftp服务器
  8. 【干货】60 余家免费正版图片网站
  9. GIS制图人员的自我修养(2)--制图意识
  10. JavaScript通过style只能获取内联 状态的样式
  11. docker-compose up是什么意思
  12. 纽微特纪事:吾是如何被架空的(各位引以为戒)
  13. 用DDA算法绘制一条直线
  14. Excel常用快捷键大全
  15. 12款在线批量缩短新浪短链接的生成器和接口api
  16. Linux下安装MySQL、安装注意事项以及安装问题解决等(以腾讯云服务为主)
  17. WRF气象数据之NECP FNL数据批量下载
  18. Mac OS X 通知中心彻底删除网站的通知
  19. java将map根据key分组_Java将List中的实体类按照某个字段进行分组并存放至Map中操作代码...
  20. 电子商务系统设计经验分享

热门文章

  1. 深入解析锂电池保护电路工作原理
  2. java升序降序排列desc_Sql--order by、desc降序、top
  3. Hexo博客搭建以及主题使用
  4. 基本矩阵运算法则之笔记
  5. wifi动不动就断开_笔记本Wifi上网经常间歇性断网的修复
  6. 改变磁盘格式gpt_改变游戏规则或结束游戏? 准备好参加GPT-3
  7. bingo卡片js代码_Excel Bingo卡随机数代码
  8. C语言实现数字全排列
  9. unity blend混合
  10. 黑色的计算机英语,黑色英文怎么说_黑色的英文怎么写 - 沪江英语