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. Windows下的特殊unicode输入

    相信很多运维人员见过这样的一种输入方法,按住键盘的ALT键然后在小键盘处输入88,放开ALT键,然后再按住ALT在小键盘处输入80,再放开键盘,屏幕光标文本处就会依次出现XP这个2个字母,这个很神奇, ...

  2. Flutter 实现退出登录功能,应用退出到登录界面 | 返回应用首页

    1. 使用场景:退出登录./// 路由作用:移除 [ModalRoute.withName("/loginPage")] 除外的所有界面,并跳转到 ["/loginPag ...

  3. 利用JS获取本地时间和服务器时间

    <p id="labTime"> <script type="text/javascript"> //取客户端时间 setInterva ...

  4. Linux C代码 获取IP地址

    Ubuntu 16.04下,可编译通过: #include <stdio.h> #include <ifaddrs.h> #include <arpa/inet.h> ...

  5. stm32CubeMx 实现单通道ADC DMA采集

    今天要做的是ADC单通道DMA采集实验 MCU : STM32F429 开发工具:STM32CubeMx 版本号 5.0.0 实验目的:实现ADC1 13通道 DMA采集 一 :简介 首先,我们来看一 ...

  6. System.Security.Cryptography.CryptographicException 微信支付中公众号发红包时候碰到的错误。

    转 留记录.我是第二个错误原因 我总结了一下出现证书无法加载的原因有以下三个 1.证书密码不正确,微信证书密码就是商户号 解决办法:请检查证书密码是不是和商户号一致 2.IIS设置错误,未加载用户配置 ...

  7. js中的new操作符与Object.create()的作用与区别

    js中的new操作符与Object.create()的作用与区别 https://blog.csdn.net/mht1829/article/details/76785231 2017年08月06日 ...

  8. flyway-Maven插件-configuration节点配置详解

    <configuration> <driver>org.hsqldb.jdbcDriver</driver> <url>jdbc:hsqldb:file ...

  9. C 六度空间理论的实现

    “六度空间”理论又称作“六度分隔(Six Degrees of Separation)”理论.这个理论可以通俗地阐述为:“你和任何一个陌生人之间所间隔的人不会超过六个,也就是说,最多通过五个人你就能够 ...

  10. 开源移动端IM比较SipDroid,IMSDroid,CSipsimple,Linphone,webrtc

    最新要做一个移动端视频通话软件,大致看了下现有的开源软件 一) sipdroid1)架构sip协议栈使用JAVA实现,音频Codec使用skype的silk(Silk编解码是Skype向第三方开发人员 ...