Demo1 Meterial Design入门:导航栏(使用ToolBar)

在Holo的时代,导航栏是应用程序的部件,要想修改、设置其属性就变得困难,在新的设计规范下,这种旧的用法已经不再被提倡,取而代之的是用ToolBar这个组件代替导航栏功能。

ToolBar是用户界面组件,只要把这个组件放到导航栏的位置下就可以充当导航栏使用,优点是其灵活性大。使用ToolBar的第一步是设置Application的Theme属性为NoActionBar:

style.xml:

<style name="AppTheme"parent="Theme.AppCompat.Light.NoActionBar">

之后先在layout文件夹下创建toorbar.xml文件:

toolbar.xml:

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.Toolbar
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/toolbar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="?attr/colorPrimary"
    android:minHeight="?attr/actionBarSize"
    app:theme="@style/ThemeOverlay.AppCompat.ActionBar" >
</android.support.v7.widget.Toolbar>

这里的ToolBar的theme属性为 @style/ThemeOverlay.AppCompat.ActionBar。在主布局中我们只把toolbar添加进去,然后在onCreate方法中通过setSupportActionBar方法就可以把ToolBar加载到导航栏以之使用:

MainActivity.java:

public class MainActivity extends AppCompatActivity {
    private Toolbar toolbar;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main_layout);

        toolbar = (Toolbar)findViewById(R.id.toolbar);
        toolbar.setTitle("I am toolbar");
        toolbar.setTitleTextColor(Color.WHITE);
        toolbar.setSubtitle("toolbar"); //对于ToolBar标题一类的设置要在 setSupportActionBar()之前调用才会有效
        setSupportActionBar(toolbar);
    }
}

导航栏已经是新的风格了,但这远远不够,我们接下来还要往上面添加菜单按键,其实ToolBar上的菜单选项类似于Activity的菜单,用法是一样的,区别在于效果不同。现在先创建菜单文件:

toolbar_menu.xml:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <item
        android:id="@+id/mToolBar_Share"
        android:title="share"
        app:showAsAction="always"
        android:icon="@android:drawable/ic_menu_share"/>
    <item
        android:id="@+id/mToolBar_Message"
        android:title="message"
        app:showAsAction="always"
        android:icon="@android:drawable/ic_dialog_email"/>
</menu>

这里有一个属性很关键,就是showAsAction,这个属性决定了这个菜单会不会出现在导航栏上,设置为always表示此菜单栏始终出现在菜单栏下。之后的工作就是在Activity中重写onCreateOptionsMenu方法以加载菜单、重写onOptionsItemSelected方法以响应菜单消息。代码就不粘了,直接上效果图:

最后,我们要往导航栏添加主按键(最左侧的按键,Navigation),只需要指定其图标然后传入onClickLisener对象就可以实现按键功能:

toolbar = (Toolbar)findViewById(R.id.toolbar);
toolbar.setTitle("I am toolbar");
toolbar.setTitleTextColor(Color.WHITE);
toolbar.setSubtitle("toolbar"); //对于ToolBar标题一类的设置要在 setSupportActionBar()之前调用才会有效
setSupportActionBar(toolbar);
toolbar.setNavigationIcon(android.R.drawable.sym_def_app_icon);
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Toast.makeText(MainActivity.this, "Navigation", Toast.LENGTH_SHORT).show();
    }
});

至此,关于全新风格的导航栏已经讲解完毕,效果如下:

下一篇的内容将是配合导航栏Navigation使用的侧滑菜单功能的实现。

Demo源码下载地址:Demo1:ToolBar

时间: 2024-10-30 06:09:32

Demo1 Meterial Design入门:导航栏(使用ToolBar)的相关文章

Android之官方导航栏之Toolbar(Toolbar+DrawerLayout+ViewPager+PagerSlidingTabStrip)

通过前几篇文章,我们对Android的导航栏有了一定的了解认识,本次文章将对Toolbar进行综合应用,主要结合DrawerLayout.ViewPager.PagerSlidingTabStrip一起使用. PagerSlidingTabStrip是github上一个开源库,地址为:https://github.com/astuetz/PagerSlidingTabStrip DrawerLayout之前有过介绍,在此不在过多介绍. 先看布局文件: <RelativeLayout xmlns:

Android基础入门教程——5.2.1 Fragment实例精讲——底部导航栏的实现(方法1)

Android基础入门教程--5.2.1 Fragment实例精讲--底部导航栏的实现(方法1) 标签(空格分隔): Android基础入门教程 本节引言: 在上一节中我们对Fragment进行了一个初步的了解,学习了概念,生命周期,Fragment管理与 Fragment事务,以及动态与静态加载Fragment.从本节开始我们会讲解一些Fragment在实际开发 中的一些实例!而本节给大家讲解的是底部导航栏的实现!而基本的底部导航栏方法有很多种, 比如全用TextView做,或者用RadioB

分别用ToolBar和自定义导航栏实现沉浸式状态栏

一.ToolBar 1.在build.gradle中添加依赖,例如: compile 'com.android.support:appcompat-v7:23.4.0' 2.去掉应用的ActionBar.可以是修改主题theme为"NoActionBar",例如: <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> 或者不修改主题为"NoAct

Android基础入门教程——5.2.2 Fragment实例精讲——底部导航栏的实现(方法2)

Android基础入门教程--5.2.2 Fragment实例精讲--底部导航栏的实现(方法2) 标签(空格分隔): Android基础入门教程 本节引言: 上一节中我们使用LinearLayout + TextView实现了底部导航栏的效果,每次点击我们都要重置 所有TextView的状态,然后选中点击的TextView,有点麻烦是吧,接下来我们用另一种方法: RadioGroup + RadioButton来实现我们上一节的效果! 1.一些碎碎念 本节用到的是实现单选效果的RadioButt

Android基础入门教程——5.2.3 Fragment实例精讲——底部导航栏的实现(方法3)

Android基础入门教程--5.2.3 Fragment实例精讲--底部导航栏的实现(方法3) 标签(空格分隔): Android基础入门教程 本节引言 前面我们已经跟大家讲解了实现底部导航栏的两种方案,但是这两种方案只适合普通的情况,如果 是像新浪微博那样的,想在底部导航栏上的item带有一个红色的小点,然后加上一个消息数目这样, 前面两种方案就显得无力了,我们来看看别人的APP是怎么做的,打开手机的开发者选项,勾选里面的: 显示布局边界,然后打开我们参考的那个App,可以看到底部导航栏是这

Bootstrap入门Demo——制作路径导航栏

今天在在群里聊天的时候看到一只程序员发了一张用Bootstrap做的界面,感觉挺好看,然后去官网看了下组件,发现都挺漂亮的,然后看到了路径导航栏,刚好要做这个东西,然后就下了Bootstrap的源码看了看. 一,源码文件简介 下载完源码之后,我们肯定是想着先把源码中的Demo先运行下看看,但是,看着这么多英文的东西还是很迷茫,所以,从整体上熟悉下都有什么东西还是很有必要的. 二,如何引入的问题 现在很多UI框架都是基于Jquery的,所以,在使用之前,如果需要,一定要先引入jquery文件,然后

Android界面编程——导航栏及菜单(六)

Android界面编程--导航栏及菜单 2.7导航栏及菜单 2.7.1  ActionBar ActionBar是Android3.0(API 11)开始增加的新特性,ActionBar出现在活动窗口的顶部,可以显示标题.icon.Actions按钮.可交互View,可实现应用程序级的导航,如图2.7-1所示 图2.7-1 其中 1. App icon: 主要用于展示App的Logo,如果当前界面不是一级界面,还可以展示返回航. 2.View Control: 用于切换不同的视图或者展示非交互信

【转】【iOS】导航栏那些事儿

原文网址:http://www.jianshu.com/p/f797793d683f 参考文章 navigationItem UINavigationItem UINavigationBar UIBarButtonItem UIButton iOS 7 教程:定制iOS 7中的导航栏和状态栏 前言 本文试图阐释清楚导航栏相关的概念和用法,比如UINavigationBar和UINavigationItem的区别和联系,UIBarButtonItem的用法以及在纯代码和storyboard中有什么

iOS:导航栏的工具条和导航条

// // main.m // Hello // // Created by lishujun on 14-8-28. // Copyright (c) 2014年 lishujun. All rights reserved. // #import <UIKit/UIKit.h> @interface TestViewController : UIViewController @end @implementation TestViewController -(void) loadView {