文章目录

  • Toolbar是什么
  • 基本框架
  • 常用属性
  • 添加工具栏点击事件
  • 更复杂的工具栏

Toolbar是什么

在项目运行在虚拟机上时,都可以看见屏幕上方有一个栏目(下图红框圈出的部分),此为系统默认的DarkActionBar,可在themes.xml中查看。


而Toolbar就是用于替换该栏目的,以便于我们更灵活的编辑栏目内容,所以我们先将主题文件中的DarkActionBar改为NoActionBar,再次运行就可以发现顶端的栏目不见了:

基本框架

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><androidx.appcompat.widget.Toolbarandroid:background="@color/teal_200"android:layout_width="match_parent"android:layout_height="?attr/actionBarSize"/></LinearLayout>

注意尖括号里不是普通的Toolbar,而是androidx.appcompat.widget.Toolbar。然后栏目的宽度直接与屏幕一致,高度则调用ActionBar的高度。设置好后在虚拟机上运行我们就能看到一个自定义颜色的工具栏:

常用属性

app:navigationIcon 导航图标,一般情况下放回退按钮,点击退回上一个界面。
android:background 工具栏颜色
app:title 标题
app:titleTextColor 标题文字颜色
app:titleMarginStart 标题与左侧间距
app:subtitle 子标题
app:subtitleTextColor 子标题颜色
app:logo 工具栏logo

随意地设置了一番,看看效果:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"xmlns:app="http://schemas.android.com/apk/res-auto"android:orientation="vertical"><androidx.appcompat.widget.Toolbarandroid:background="@color/teal_200"app:navigationIcon="@drawable/ic_baseline_arrow_back_ios_24"app:title="ShadyPi's blog"app:titleTextColor="#10047E"app:titleMarginStart="60dp"app:subtitle="Android学习笔记"app:subtitleTextColor="#162D6A"app:logo="@mipmap/ic_launcher"android:layout_width="match_parent"android:layout_height="?attr/actionBarSize"/></LinearLayout>

添加工具栏点击事件

给Toolbar加上id,我们就可以在java代码里获取并监听用户对工具栏图标的点击:

package com.example.mytoolbar;import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;//记得Toolbar要导这个包的import android.os.Bundle;
import android.util.Log;
import android.view.View;public class MainActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Toolbar toolbar=findViewById(R.id.tb);toolbar.setNavigationOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {Log.e("ShadyPi","栏目被点击了");}});}
}


在java代码里也可以完成标题、颜色、工具栏图标等设置,实现效果与在xml中一致。

Toolbar toolbar2=findViewById(R.id.tb2);toolbar2.setNavigationIcon(R.drawable.ic_baseline_arrow_back_ios_24);toolbar2.setTitle("第二个工具栏");toolbar2.setNavigationOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {Log.e("ShadyPi","工具栏2被点击了");}});

更复杂的工具栏

只设置margin的话,感觉并不是很科学,更好的办法是直接添加一个TextView控件,设置其居中:

 <androidx.appcompat.widget.Toolbarandroid:id="@+id/tb3"android:background="@color/teal_200"android:layout_marginTop="10dp"app:navigationIcon="@drawable/ic_baseline_arrow_back_ios_24"android:layout_width="match_parent"android:layout_height="?attr/actionBarSize"><TextViewandroid:text="居中"android:layout_gravity="center"android:layout_width="wrap_content"android:layout_height="wrap_content"/></androidx.appcompat.widget.Toolbar>


通过编写这个TextView,我们就能做出更复杂的效果。

Android开发之Toolbar(实现自定义工具栏)相关推荐

  1. Android开发之2048安卓版

    之前是在eclipse上写的,后面换成了android sudio. 2048游戏的UI整体可以采用线性布局,即LinearLayout,其中嵌套一个线性布局和一个GridLayout,内嵌的线性布局 ...

  2. Android开发之旅:android架构

    引言 通过前面两篇: Android 开发之旅:环境搭建及HelloWorld Android 开发之旅:HelloWorld项目的目录结构 我 们对android有了个大致的了解,知道如何搭建and ...

  3. Android开发之ApiCloud模块开发之模块引用第三方库的问题

    因为现在第三方库比较多,所以很多人为了快速开发导致库用烂大街了,但是在模块开发中本人不建议使用第三方库的依赖会有很多问题,要么是资源图片找不到,要么是布局找不到啥的,但是有的需求只有第三方库怎么办呢? ...

  4. Android 开发之旅:深入分析布局文件又是“Hello World!”

    引言 上篇可以说是一个分水岭,它标志着我们从Android应用程序理论进入实践,我们拿起手术刀对默认的"Hello World!"程序进行了3个手术,我们清楚了"Hell ...

  5. android布局黑色字体颜色,Android开发之FloatingActionButton悬浮按钮基本使用、字体、颜色用法示例...

    本文实例讲述了Android开发之FloatingActionButton悬浮按钮基本使用.字体.颜色用法.分享给大家供大家参考,具体如下: 这里主要讲: FloatingActionsMenu自定义 ...

  6. android中oncreate方法,android开发之onCreate( )方法详解

    这里我们只关注一句话:This is where you should do all of your normal static set up.其中我们只关注normal static, normal ...

  7. Android开发之ViewFlipper

    Android开发之ViewFlipper /* *  Android开发之ViewFlipper *  北京Android俱乐部群:167839253 * Created on: 2012-7-25 ...

  8. Android 开发之Okhttp网络请求日志打印

    这里写自定义目录标题 Android 开发之Okhttp 网络请求日志打印 OkHTTP网络日志打印 Android 开发之Okhttp 网络请求日志打印 网络请求是开发的日常工作内容之一,网络日志打 ...

  9. Android开发之SlidingDrawer(一)

    Android开发之SlidingDrawer(一) /* *  Android开发之SlidingDrawer *  北京Android俱乐部群:167839253 * Created on: 20 ...

最新文章

  1. springcloud(三):服务提供与调用
  2. 将JPG文件作为EXE执行
  3. 科大星云诗社动态20210903
  4. AngularJS分层开发
  5. 推荐一个 Chrome 浏览历史记录管理的扩展 - History Trends Unlimited
  6. gulp编译css_如何用gulp缩小CSS
  7. HDU 2296 Ring AC自动机 + DP
  8. Hadoop之Shell脚本自动启动
  9. python个人所得税怎么写分录_个人所得税的会计分录!
  10. Lighttpd 启用 HTTPS 并重定向 HTTP 为 HTTPS 访问配置
  11. 中鸣机器人轨迹C语言教程,康宁小学机器人社团
  12. 问卷与量表数据分析(SPSS+AMOS)学习笔记(一) :问卷分析的流程
  13. 语音处理基础:预加重、分帧、帧移、加窗、傅里叶变换
  14. 三大主流前端框架介绍VUE 、React、Angular
  15. android 播放pdf文件格式,一个方法告诉你安卓手机如何打开PDF格式文件
  16. github 443问题
  17. php orm中关联查询,【整理】Laravel中Eloquent ORM 关联关系的操作
  18. 消防工程师 6 干粉灭火系统 7.1 泡沫灭火系统-组件
  19. @Autowired的基本使用
  20. 副屏幕全屏_电脑 双屏(双屏电脑主屏副屏设置)

热门文章

  1. 多台电脑共享打印机怎么设置?
  2. Java集合(四一):BlockingQueue
  3. UPD简单的数据发送
  4. 饺子播放器RecyclerView自动播放
  5. Matlab画图必备:线型、标记符、颜色
  6. 机器学习 | MATLAB实现RBF径向基神经网络newrbe参数设定
  7. Git 配置SSH密钥
  8. 来深圳这三年我都经历了什么,一个深漂青年的所思所想
  9. django 高级扩展-中间件-上传图片-分页-富文本-celery
  10. 这位少侠我看你百会穴发绿啊