Toolbar如何使用想必大家清楚地很,实际开发中标题栏的样式各色各样,因此其基本样式便不能满足我们的需求,这就需要我们自定义布局。打开ToolBar源码我们发现它继承ViewGroup,这就表示我们可以把它当做一个存放控件的容器。

  1. <android.support.v7.widget.Toolbar
  2. android:layout_width="match_parent"
  3. android:layout_height="?attr/actionBarSize">
  4. <LinearLayout
  5. android:layout_width="match_parent"
  6. android:layout_height="?attr/actionBarSize"
  7. android:background="@color/colorPrimary"
  8. android:gravity="center">
  9. <TextView
  10. android:layout_width="wrap_content"
  11. android:layout_height="wrap_content"
  12. android:gravity="center"
  13. android:text="标题"
  14. android:textSize="16sp"
  15. android:textColor="@color/white"
  16. />
  17. </LinearLayout>
  18. </android.support.v7.widget.Toolbar>

结果:左边出现一片空白 
 
查找源码发现:

  1. final int contentInsetStart =
  2. a.getDimensionPixelOffset(R.styleable.Toolbar_contentInsetStart,
  3. RtlSpacingHelper.UNDEFINED);
  4. final int contentInsetEnd =
  5. a.getDimensionPixelOffset(R.styleable.Toolbar_contentInsetEnd,
  6. RtlSpacingHelper.UNDEFINED);
  7. final int contentInsetLeft =
  8. a.getDimensionPixelSize(R.styleable.Toolbar_contentInsetLeft, );
  9. final int contentInsetRight =
  10. a.getDimensionPixelSize(R.styleable.Toolbar_contentInsetRight, );
  11.  
  12. mContentInsets.setAbsolute(contentInsetLeft, contentInsetRight);
  13.  
  14. if (contentInsetStart != RtlSpacingHelper.UNDEFINED ||
  15. contentInsetEnd != RtlSpacingHelper.UNDEFINED) {
  16. mContentInsets.setRelative(contentInsetStart, contentInsetEnd);
  17. }

是这个contentInsetStart导致了左边的留白,我们只要将左边距置为0即可。

  1. <android.support.v7.widget.Toolbar
  2. xmlns:app="http://schemas.android.com/apk/res-auto"
  3. android:layout_width="match_parent"
  4. android:layout_height="?attr/actionBarSize"
  5. app:contentInsetLeft="0dp"
  6. app:contentInsetStart="0dp">
  7. <LinearLayout
  8. android:layout_width="match_parent"
  9. android:layout_height="?attr/actionBarSize"
  10. android:background="@color/colorPrimary"
  11. android:gravity="center">
  12. <TextView
  13. android:layout_width="wrap_content"
  14. android:layout_height="wrap_content"
  15. android:gravity="center"
  16. android:text="标题"
  17. android:textSize="16sp"
  18. android:textColor="@color/white"
  19. />
  20. </LinearLayout>
  21. </android.support.v7.widget.Toolbar>

 
这样Toobar的样式就可以任意由我们修改了

Toolbar自定义布局的更多相关文章

  1. 干货之UIButton的title和image自定义布局

    当需要实现一个自定义布局图片和标题的按钮时候,不知道有多少少年直接布局了UIButton,亦或是自定义一个UIView,然后以空白UIButton.UILabel.UIImageVew作为subVie ...

  2. SharePoint 2013 设置自定义布局页

    在SharePoint中,我们经常需要自定义登陆页面.错误页面.拒绝访问等:不知道大家如何操作,以前自己经常在原来页面改或者跳转,其实SharePoint为我们提供了PowerShell命令,来修改这 ...

  3. Collection View 自定义布局(custom flow layout)

    Collection view自定义布局 一般我们自定义布局都会新建一个类,继承自UICollectionViewFlowLayout,然后重写几个方法: prepareLayout():当准备开始布 ...

  4. iOS-UICollectionView自定义布局

    UICollectionView自定义布局 转载: http://answerhuang.duapp.com/index.php/2013/11/20/custom_collection_view_l ...

  5. 详细分享UICollectionView的自定义布局(瀑布流, 线性, 圆形…)

    前言: 本篇文章不是分享collectionView的详细使用教程, 而是属于比较’高级’的collectionView使用技巧, 阅读之前, 我想你已经很熟悉collectionView的基本使用, ...

  6. OC - 31.通过封装的自定义布局快速实现商品展示

    概述 实现效果 设计思路 采用MVC架构,即模型—视图-控制器架构 使用MJExtension框架实现字典转模型 使用MJRefresh框架实现上拉和下拉刷新 上拉刷新,加载新的数据 下拉刷新,加载更 ...

  7. OC - 30.如何封装自定义布局

    概述 对于经常使用的控件或类,通常将其分装为一个单独的类来供外界使用,以此达到事半功倍的效果 由于分装的类不依赖于其他的类,所以若要使用该类,可直接将该类拖进项目文件即可 在进行分装的时候,通常需要用 ...

  8. OC - 29.自定义布局实现瀑布流

    概述 瀑布流是电商应用展示商品通常采用的一种方式,如图示例 瀑布流的实现方式,通常有以下几种 通过UITableView实现(不常用) 通过UIScrollView实现(工作量较大) 通过UIColl ...

  9. Android:创建可穿戴应用 - 自定义布局

    创建自定义布局(Creating Custom Layouts) 本文将介绍如何创建自定义通知以及使用可穿戴UI库来创建自定义布局你同时还需要了解可穿戴设计准则(Wear Design Princip ...

随机推荐

  1. VMware 虚拟机添加硬盘以及为新添加的硬盘创建Samba共享 (转)

    一.为VMware虚拟机添加硬盘 1. 首先在VMware虚拟机的VM->Setting子菜单中为虚拟机添加一块15G大小的SCSI类型的硬盘(注意:如果原来为IDE硬盘,SCSI类型的硬盘可能 ...

  2. A - BBQ Easy

    Score : 200 points Problem Statement Snuke is having a barbeque party. At the party, he will make N  ...

  3. camera摄像原理之四:曝光和GAMMA

    GAMMA:输出/输入(光信号值) 从最明亮到最黑暗,假设人眼能够看到一定的范围,那么胶片(或CCD 等电子感光器件)所能表现的远比人眼看到的范围小的多,而这个有限的范围就是感光宽容度. 人眼的感光宽 ...

  4. UVALive3126 Taxi Cab Scheme —— 最小路径覆盖

    题目链接:https://vjudge.net/problem/UVALive-3126 题解: 最小路径覆盖:即在图中找出尽量少的路径,使得每个结点恰好只存在于一条路径上.其中单独一个点也可以是一条 ...

  5. YTU 2430: C语言习题 链表建立,插入,删除,输出

    2430: C语言习题 链表建立,插入,删除,输出 时间限制: 1 Sec  内存限制: 128 MB 提交: 576  解决: 280 题目描述 编写一个函数creatlink,用来建立一个动态链表 ...

  6. AngularJS 指令实践指南(二)

    这个系列教程的第一部分给出了AngularJS指令的基本概述,在文章的最后我们介绍了如何隔离一个指令的scope.第二部分将承接上一篇继续介绍.首先,我们会看到在使用隔离scope的情况下,如何从指令 ...

  7. POJ - 3041 Asteroids(最小点覆盖数)

    1.有一个n*n的矩阵,在矩阵上有k个行星,用武器射击一次可以消灭一行或者一列的行星,求消灭所有的行星的最少射击次数. 2.最小点覆盖数 = 最大匹配数 主要在于转化:看图: 这样,在建成的二分图中, ...

  8. ChartCtrl源码剖析之——CChartAxis类

    CChartAxis类用来绘制波形控件的坐标轴,这个源码相对较复杂,当初阅读的时候耗费了不少精力来理解源码中的一些实现细节. CChartAxis类的头文件. #if !defined(AFX_CHA ...

  9. wincap的安装与环境配置

    首先开始知道什么是wincap? 1 通常情况下,大多数的网络应用程序都是通过操作系统来访问网络(sockets),这样是算比较简单的了,毕竟已经封装好了 ,有的时候呢需要一些底层的细节比如协议处理, ...

  10. vs2010 每行代码显示虚线

    快捷键:Ctrl+R,W或Ctrl+E,S,即可去除 或者是编辑菜单——高级——查看空白 VS12010代码编辑器横向滚动条 工具----选项-----文本编辑器---所有语言---右侧 自动换行去掉