ToolBar 简单使用

ToolBar 是在 android 5.0之后推出的一款用来替代 ActionBar 的 View。ActionBar 是Activity的一部分,不能用在其他视图层次上(自定义的 actionBar 除外)。而 ToolBar 可以用于任何层次的视图,没有和 Activity 之间有绑定的关系。使用起来也更加的灵活多变。

ToolBar 中可以含有多样的元素

  • Navigation Button

  • Branded Logo Image

  • Title And SubTitle

  • Custom Views

  • Action Menu

navigation button

一个导航按钮

branded logo image

一个品牌logo

title and subtitle

标题和子标题

custom views

一个或多个自定义视图

action menu

一个菜单

使用

  1. 引入相关的依赖
compile 'com.android.support:appcompat-v7:27.1.1'
  1. activity继承自 AppCompatActivity
public class MainActivity extends AppCompatActivity {

    @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
  1. 设置主题为NoActionBar
在当前的style中添加这2条就可以不显示actionbar
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
  1. 布局中引入ToolBar
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.test.toolbardemo.toolbardemo.MainActivity"> <android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:background="?colorPrimary"
app:title="Title"
app:subtitle="subtitle"
android:gravity="center_vertical"
app:navigationIcon="@mipmap/ic_launcher"
app:logo="@mipmap/ic_launcher_round"
android:layout_height="wrap_content">
<!-- 可以在这里自己定义自己的 actionbar 布局 -->
</android.support.v7.widget.Toolbar> </LinearLayout>
  1. 在activity中进行actionbar的设置等
public class MainActivity extends AppCompatActivity {

    private static final String TAG = MainActivity.class.getSimpleName();
private Toolbar toolbar; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar); getSupportActionBar().setDefaultDisplayHomeAsUpEnabled(true); toolbar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
//如果处理了点击事件就返回true switch (item.getItemId()){
case R.id.menu_add:
Log.i(TAG, "onMenuItemClick: Add");
break;
case R.id.menu_update:
Log.i(TAG, "onMenuItemClick: Update");
break;
case R.id.menu_about:
Log.i(TAG, "onMenuItemClick: About");
break;
case R.id.menu_delete:
Log.i(TAG, "onMenuItemClick: Delete");
break;
case R.id.menu_query:
Log.i(TAG, "onMenuItemClick: Query");
break;
}
Log.i(TAG, "onMenuItemClick: ");
return true;
}
}); } //后续处理菜单和菜单的点击事件和之前的menu的使用方式类似 @Override
public boolean onCreateOptionsMenu(Menu menu) {
//设置menu
getMenuInflater().inflate(R.menu.toolbar,menu);
return true;
} @Override
public boolean onOptionsItemSelected(MenuItem item) {
//处理导航按钮的点击事件,已经处理了就返回true
if(item.getItemId() == android.R.id.home){
Log.i(TAG, "onOptionsItemSelected: Navigation");
return true;
}
return super.onOptionsItemSelected(item);
}
}
  1. menu菜单文件
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/menu_add" android:title="add"></item>
<item android:id="@+id/menu_delete" android:title="delete"></item>
<item android:id="@+id/menu_update" android:title="update"></item>
<item android:id="@+id/menu_query" android:title="delete"></item>
<item android:id="@+id/menu_about" android:title="about"></item>
</menu>
  1. 测试

    logcat捕获的日志
07-20 02:20:07.785 1826-1826/com.test.toolbardemo.toolbardemo I/MainActivity: onOptionsItemSelected: Navigation
07-20 02:20:15.217 1826-1826/com.test.toolbardemo.toolbardemo I/MainActivity: onMenuItemClick: Update
07-20 02:20:15.217 1826-1826/com.test.toolbardemo.toolbardemo I/MainActivity: onMenuItemClick:
  1. 解决个小问题

    在使用的过程中,android studio 创建工程时提示支持了appcompat-v7:28+,我自己修改为自己需要用的23,之后就是一致出问题,发现只有compileSDKVersion,buildToolsVersion以及support库的版本一致时才正常,统一修改为23之后,发现提示我
Error:The SDK Build Tools revision (23.0.3) is too low for project ':app'. Minimum required is 25.0.0
<a href="install.build.tools">Install Build Tools 25.0.0, update version in build file and sync project

之后上网找了下,是因为工程的gradle插件版本要求最低支持到25,就是在project.build文件中的插件配置

buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.3.2'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}

这时候可以选择是降低gradle插件的版本或者是提高sdk的版本,我选择了提高sdk的版本

完整的app.gradle代码

apply plugin: 'com.android.application'
// compileSdkVersion,buildToolsVersion,support库的大版本必须一致,不然一堆问题
android {
compileSdkVersion 25
buildToolsVersion '25.0.3'
defaultConfig {
applicationId "com.test.toolbardemo.toolbardemo"
minSdkVersion 23
targetSdkVersion 23
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
} dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
compile 'com.android.support:appcompat-v7:25.3.1'
compile 'com.android.support.constraint:constraint-layout:1.0.2'
testCompile 'junit:junit:4.12'
}

ToolBar 简单使用的更多相关文章

  1. ToolbarDemo【Toolbar作为顶部导航栏的简单使用】

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 简单记录ToolBar作为导航栏的使用.关键点在于如何在dialogfragment中使用toolbar! Toolbar的图标.标 ...

  2. Android Toolbar样式定制详解

    前言 Marterial Design出来也有一段时间了,为了紧跟Google的设计规范,决定在项目中使用Toolbar.使用了一段时间之后,发现很多时候原始的Toolbar并不能满足项目的要求.为了 ...

  3. Android Material Design 之 Toolbar的使用

    Material Design是谷歌提出来的最新ui设计规范,我想actionbar大家也许并不陌生,toolbar简单而言可以看做为actionbar的升级版,相比较actionbar而言,tool ...

  4. 美化你的APP——从Toolbar開始

    Toolbar是什么 Toolbar是Google在Android 5.0中推出的一款替代ActionBar的View.ActionBar必须得作为Activity内容的一部分,而Toolbar能够放 ...

  5. 窗体皮肤实现 - 实现简单Toolbar(六)

    自定义皮肤很方便,基础开发的工作也是很大的.不过还好一般产品真正需要开发的并不是很多.现在比较漂亮的界面产品都会有个大大的工具条. Toolbar工具条实现皮肤的方法还是可以使用Form的处理方案.每 ...

  6. Androd Toolbar 的简单使用(转)

    14年Android开发者大会提出了Android5.0 系统以及 材料设置 Material Design.在 材料设计中推出了大量的UI效果,其中某些功能 已添加进 兼容包,所以可以在低版本中来实 ...

  7. Android ToolBar 的简单封装

    使用过 ToolBar 的朋友肯定对其使用方法不陌生,由于其使用方法非常easy.假设对 ActionBar 使用比較熟练的人来说.ToolBar 就更easy了!只是,相信大家在使用的过程中都遇到过 ...

  8. 【知识必备】一文让你搞懂design设计的CoordinatorLayout和AppbarLayout联动,让Design设计更简单~

    一.写在前面 其实博主在之前已经对design包的各个控件都做了博文说明,无奈个人觉得理解不够深入,所以有了这篇更加深入的介绍,希望各位看官拍砖~ 二.从是什么开始 1.首先我们得知道Coordina ...

  9. 安卓自定义组合控件--toolbar

    最近在学习安卓APP的开发,用到了toolbar这个控件, 最开始使用时include layout这种方法,不过感觉封装性不好,就又改成了自定义组合控件的方式. 使用的工具为android stud ...

随机推荐

  1. Django Rest Framework(阿奇)

    Django Rest Framework 一. 什么是RESTful REST与技术无关,代表的是一种软件架构风格,REST是Representational State Transfer的简称,中 ...

  2. eureka 和zookeeper 区别 优势

    作为服务注册中心,Eureka比Zookeeper好在哪里 著名的CAP理论指出,一个分布式系统不可能同时满足C(一致性).A(可用性)和P(分区容错性).由于分区容错性在是分布式系统中必须要保证的, ...

  3. 一个数字键盘引发的血案——移动端H5输入框、光标、数字键盘全假套件实现

    https://juejin.im/post/5a44c5eef265da432d2868f6 为啥要写假键盘? 还是输入框.光标全假的假键盘? 手机自带的不用非得写个假的,吃饱没事干吧? 装逼?炫技 ...

  4. (转)linux基本变量学习:位置变量$0 、$1 shift轮替、本地变量、环境变量、特殊变量

    原文:http://blog.51cto.com/woyaoxuelinux/1863045 shell: 弱类型编程语言 强:变量在使用前,必须事先声明,甚至还需要初始化: 弱:变量用时声明,甚至不 ...

  5. Oracle 事务操作

    在看本文之前,请确保你已经了解了Oracle事务和锁的概念即其作用,不过不了解,请参考数据库事务的一致性和原子性浅析和Oracle TM锁和TX锁 1.提交事务 当执行使用commit语句可以提交事务 ...

  6. 2014年北京网络赛 Instrusive HDU 5040 题解 优先队列

    网赛的时候看了这道题,发现就是平常的那种基础搜索题. 由于加了一个特殊条件:可以一次消耗3秒或原地停留1秒. 那就不能使用简单的队列了,需要使用优先队列才行. 题意 告诉一副地图:一个起点,一个终点, ...

  7. Program, Process and Thread

    A program is an executable file store. A process is a running program. A thread is a single sequence ...

  8. 使用webgl(three.js)搭建一个3D智慧园区、3D建筑,3D消防模拟,web版3D,bim管理系统——第四课

    序:这段时间忙于奔波,好久没有更新了,今天更新一下,继续上节课的完善讲解,算是对前段时间的一个总结吧.披星戴月的时光也算有点应用效果了. 对于webgl(three.js)性能这一块我在上节课< ...

  9. .netCore2.0 依赖注入

    依赖注入(ID)是一种实现对象及其合作者或者依赖想之间松散耦合的技术对于传统的方法来说,获取类的方法通常用new如下 public class DIController : Controller { ...

  10. Firebird with lock

    Firebird 锁,默认是行级锁,即记录锁. 通常最常用的是 with lock ,即:将查出的所有记录都锁定,但允许其他事务读取,不允许其他事务更新.删除.本事务允许更新. 另一种 for upd ...