Android 之 ToolBar 踩坑笔记
阅读原文时间:2023年07月09日阅读:1

•前言

  这两天,学完了 Fragment 的基础知识,正准备跟着《第一行代码》学习制作一个简易版的新闻应用;

  嘀嘀嘀~~~

  一声消息传来,像往常一样,打开 QQ,当我看到 QQ 界面的时候:

    

  突发奇想,我是不是可以尝试制作一下这个界面,以及完成一些点击跳转的效果;

  说干就干,先大致画了个草图,明确该如何分配空间:

    

  忍不住叨叨两句,画这种嵌套的方形框, Notability 真香;

  大体理了理思路:

  • 将 ipad 界面一分为二,左边是一个权重为 1 的 LinearLayout

  • 右边是一个权重为 2 的 LinearLayout

      当点击左边消息列表时,右边动态添加一个 Fragment,思路是不是还蛮清晰的~~~

  左右分工好后,接着开始细究左边内部的分工了;

  我将左边的 LinearLayout 分成了三块,就暂且叫他们 a,b,c;

  在设计 a 的时候,也就是这一块:

    

  最左边的头像我用 ImageView 控件体现,中间的,暂且用 TextView 控件实现;

  最右边的 有一个弹出菜单,当然选择 menu 来实现喽;

  当开始敲 menu 控件的时候,突然发现,我好像没怎么深入的学习过,so,一场恶补开始了;

  翻阅了各种各样的博客,终于,完成了这篇惊世之作——在活动中使用 menu

  可是,我却翻车了,怎么也实现不了QQ里的这种效果;

  不放弃的我又去找度娘聊天去了,还好找到了一篇,快点我

  ToolBar 是什么玩意????

  没办法,接着肝;

  苦熬一上午,终于肝明白了,以此记录;

  接下来要步入正题喽~

•简介

Toolbar 是在 Android 5.0 开始推出的一个 Material Design 风格的导航控件 ;

  Google 非常推荐大家使用 Toolbar 来作为Android客户端的导航栏,以此来取代之前的 Actionbar 。

  与 Actionbar 相比,Toolbar 明显要灵活的多。

  它不像 Actionbar 一样,一定要固定在Activity的顶部,而是可以放到界面的任意位置。

  除此之外,在设计 Toolbar 的时候,Google也留给了开发者很多可定制修改的余地;

  这些可定制修改的属性在API文档中都有详细介绍,如:

  • 设置导航栏图标;
  • 设置App的logo;
  • 支持设置标题和子标题;
  • 支持添加一个或多个的自定义控件;
  • 支持Action Menu;

•准备工作

  首先,新建一个项目,选择 Empty Activity 这个选项,并命名为 Tool Bar;

  进入 Project 模式,点击 app/src/main/,找到 AndroidManifest.xml 文件;

  找到这句话  android:theme="@style/Theme.ToolBar"> ;

  可以看到,这里使用  android:theme  属性指定了一个 Theme.TestToolBar 的主提。

  那么,这个 Theme.TestToolBar 又是在哪里定义的呢?

  按住 ctrl,鼠标点击  "@style/Theme.ToolBar">  这句话:

    

  通过快捷键 ctrl,Android Studio 引领我们找到了这句话的出处;

  在我这里,这个文件在 themes.xml 中:

    

  而并不是在 res/values/styles.xml 中,《第一行代码》以及好多优质博客都声明在 styles.xml 文件中;

  这是为什么呢?

  来看这句话