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. sql查询字段中的值长度最大的记录

    SELECT max(length(字段)) FROM 表名;

  2. SqlServer数据库《基本》

    数据库简单说就是行.列组成的二维表 把列称为字段.每一行数据成为记录,能标识每一行的唯一字段称为主键 查询数据表时,索引可以提高查询速度,但是索引同时会降低新增和更新数据时的速度,应为还要更新索引. ...

  3. FreeRTOS-01移植及任务创建和删除

    根据正点原子FreeRTOS视频整理 单片机:STM32F207VC FreeRTOS源码版本:v10.0.1 任务创建和删除API函数: 工程列表: 1. main.c /**/ #include ...

  4. PIE SDK组件式开发综合运用示例

    1. 功能概述 关于PIE SDK的功能开发,在我们的博客上已经分门别类的进行了展示,点击PIESat博客就可以访问,为了初学者入门,本章节将对从PIE SDK组件式二次开发如何搭建界面.如何综合开发 ...

  5. HttpClient登陆后获取并携带cookies发起请求

    最近项目中,用到了登陆后获取并携带cookies发起请求的业务场景,现总结写出来备忘一下. 1.定义存取cookies信息的全局变量 public class HttpUtil { /** * 用来存 ...

  6. app唤起的完美解决方案,及阻止浏览器的默认弹窗行为

    https://stackoverflow.com/questions/10237031/how-to-open-a-native-ios-app-from-a-web-appvar frame = ...

  7. 使用spring遇到问题 事物不提交和更新失败

    1 使用学习使用spring mvc进行前端代码编写,发现提交修改没发sql语句 测试dao层又没问题 解决: 原来是spring配置文件,事物管理 绑定到了dao层.测试界面前端应该绑定到servi ...

  8. 为easyui添加多条件验证

    easyui的验证框架,validatebox不能有效的支持多个条件的验证,比如中文用户名,既要验证其是中文,又要验证其长度不超过6位时便显得很繁琐,需要反复的为easyui添加验证规则. 在此实现一 ...

  9. Django级联删除的选项

    Django级联删除的选项 Django模型中的on_delete属性具有如下选项: CASCADE 级联删除,也就是被引用的实体被删除后,相关的记录信息都会被删除. PROTECT 阻止删除被引用的 ...

  10. POj2387——Til the Cows Come Home——————【最短路】

    A - Til the Cows Come Home Time Limit:1000MS     Memory Limit:65536KB     64bit IO Format:%I64d & ...