android笔记-toolbar

2024-06-15 09:58
文章标签 android 笔记 toolbar

本文主要是介绍android笔记-toolbar,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

        ToolBar是Android 5.0推出的一个新的导航控件用于取代之前的ActionBar。ActionBar由于其设计原因,只能位于Activity的顶部,从而不能实现一些MaterialDesign的效果。ToolBar的强大之处在于不仅继承ActionBar的所有功能,而且很灵活,可以配合其他控件完成一些MaterialDesign的效果。

        一、ToolBar的使用

1、引入support v7支持包

        官方考虑到仍有一部分用户的手机版本号低于5.0,所以,ToolBar也放进了support v7包内,使得低版本的系统也能使用上ToolBar。所以为了支持低版本需要引入support v7支持包。

        build.gradle内输入如下代码:

dependencies {     compile 'com.android.support:appcompat-v7:23.1.1'
}

2、更改主题

        任何一个新建的项目默认都显示ActionBar。为了能够正常使用ToolBar,我们需要隐藏原来的ActionBar,这个可以在主题中修改,在values/styles.xml中做出如下修改:

    <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"><item name="colorPrimary">@color/colorPrimary</item><item name="colorPrimaryDark">@color/colorPrimaryDark</item><item name="colorAccent">@color/colorAccent</item><item name="colorControlNormal">@color/grey</item><item name="colorControlActivated">@color/blue_black</item></style>

3、布局文件定义

    <android.support.v7.widget.Toolbarandroid:id="@+id/tool_bar"android:layout_width="match_parent"android:layout_height="wrap_content"></android.support.v7.widget.Toolbar>

4、代码设置

具体含义看注释。

        Toolbar toolbar = (Toolbar) findViewById(R.id.tool_bar);// 设置标题toolbar.setTitle("title");// 设置子标题toolbar.setSubtitle("SubTitle");// 设置图标toolbar.setLogo(R.drawable.ic_launcher);// 将ToolBar传入作为ActionBarsetSupportActionBar(toolbar);// 设置导航图标toolbar.setNavigationIcon(R.drawable.icon_plus);// 设置导航图标点击监听toolbar.setNavigationOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Toast.makeText(ToolbarTestActivity.this, "Navigation click", Toast.LENGTH_SHORT).show();}});

效果如下:

5、颜色更改

以前ActionBar上文字的颜色一般是白色,但是上图中文字是黑色。这是为什么呢?

因为style中app的主题设置的是淡色主题,因此ToolBar也是淡色主题,而ToolBar上面的元素会用深色系(为了和主题颜色区分,才能看得出来)。为了让ToolBar使用深色主题,我们为ToolBar设置android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"。同时为ToolBar设置背景android:background="@color/colorPrimary"(为了美观),效果如下:


        但是设置成深色主题后也会又一个问题:如果ToolBar中有菜单按钮,那么弹出的菜单项也是深色主题,十分难看。可以通过app:popupTheme属性单独将菜单项设置为淡色主题。

app:popupTheme="@style/Theme.AppCompat.Light"

                  

6、添加菜单选项

一般导航条,在其右侧都会有菜单选项 。这里和ActionBar是一样的。

1)、在res->menu目下新建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"><itemandroid:id="@+id/menu_item1"android:icon="@drawable/app_poslogon"android:title="签到"app:showAsAction="always|withText"/><itemandroid:id="@+id/menu_item2"android:icon="@drawable/app_query"android:title="查询"app:showAsAction="always"/><itemandroid:id="@+id/menu_item3"android:icon="@drawable/app_setting"android:title="设置"app:showAsAction="never"/>
</menu>

2)、在Activity中,重写onCreateOptionsMenu()方法,把菜单加载进去。

    @Overridepublic boolean onCreateOptionsMenu(Menu menu) {getMenuInflater().inflate(R.menu.toolbar_menu, menu);return true;}

效果如下:

3)、添加点击事件

方式一、在Activity中,重写onOptionsItemSelected()方法

    @Overridepublic boolean onOptionsItemSelected(MenuItem item) {switch (item.getItemId()){case R.id.menu_item1:Toast.makeText(this, "签到", Toast.LENGTH_SHORT).show();break;case R.id.menu_item2:Toast.makeText(this, "结算", Toast.LENGTH_SHORT).show();break;case R.id.menu_item3:Toast.makeText(this, "设置", Toast.LENGTH_SHORT).show();break;}return true;}

方式二、使用ToolBar设置监听

        toolbar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() {@Overridepublic boolean onMenuItemClick(MenuItem item) {switch (item.getItemId()){case R.id.menu_item1:Toast.makeText(ToolbarTestActivity.this, "签到", Toast.LENGTH_SHORT).show();break;case R.id.menu_item2:Toast.makeText(ToolbarTestActivity.this, "结算", Toast.LENGTH_SHORT).show();break;case R.id.menu_item3:Toast.makeText(ToolbarTestActivity.this, "设置", Toast.LENGTH_SHORT).show();break;}return true;}});

这篇关于android笔记-toolbar的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1063134

相关文章

Android使用java实现网络连通性检查详解

《Android使用java实现网络连通性检查详解》这篇文章主要为大家详细介绍了Android使用java实现网络连通性检查的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录NetCheck.Java(可直接拷贝)使用示例(Activity/Fragment 内)权限要求

2025最新版Android Studio安装及组件配置教程(SDK、JDK、Gradle)

《2025最新版AndroidStudio安装及组件配置教程(SDK、JDK、Gradle)》:本文主要介绍2025最新版AndroidStudio安装及组件配置(SDK、JDK、Gradle... 目录原生 android 简介Android Studio必备组件一、Android Studio安装二、A

Android实现图片浏览功能的示例详解(附带源码)

《Android实现图片浏览功能的示例详解(附带源码)》在许多应用中,都需要展示图片并支持用户进行浏览,本文主要为大家介绍了如何通过Android实现图片浏览功能,感兴趣的小伙伴可以跟随小编一起学习一... 目录一、项目背景详细介绍二、项目需求详细介绍三、相关技术详细介绍四、实现思路详细介绍五、完整实现代码

在Android中使用WebView在线查看PDF文件的方法示例

《在Android中使用WebView在线查看PDF文件的方法示例》在Android应用开发中,有时我们需要在客户端展示PDF文件,以便用户可以阅读或交互,:本文主要介绍在Android中使用We... 目录简介:1. WebView组件介绍2. 在androidManifest.XML中添加Interne

Android协程高级用法大全

《Android协程高级用法大全》这篇文章给大家介绍Android协程高级用法大全,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友跟随小编一起学习吧... 目录1️⃣ 协程作用域(CoroutineScope)与生命周期绑定Activity/Fragment 中手

Python学习笔记之getattr和hasattr用法示例详解

《Python学习笔记之getattr和hasattr用法示例详解》在Python中,hasattr()、getattr()和setattr()是一组内置函数,用于对对象的属性进行操作和查询,这篇文章... 目录1.getattr用法详解1.1 基本作用1.2 示例1.3 原理2.hasattr用法详解2.

Android 缓存日志Logcat导出与分析最佳实践

《Android缓存日志Logcat导出与分析最佳实践》本文全面介绍AndroidLogcat缓存日志的导出与分析方法,涵盖按进程、缓冲区类型及日志级别过滤,自动化工具使用,常见问题解决方案和最佳实... 目录android 缓存日志(Logcat)导出与分析全攻略为什么要导出缓存日志?按需过滤导出1. 按

Android Paging 分页加载库使用实践

《AndroidPaging分页加载库使用实践》AndroidPaging库是Jetpack组件的一部分,它提供了一套完整的解决方案来处理大型数据集的分页加载,本文将深入探讨Paging库... 目录前言一、Paging 库概述二、Paging 3 核心组件1. PagingSource2. Pager3.

Android kotlin中 Channel 和 Flow 的区别和选择使用场景分析

《Androidkotlin中Channel和Flow的区别和选择使用场景分析》Kotlin协程中,Flow是冷数据流,按需触发,适合响应式数据处理;Channel是热数据流,持续发送,支持... 目录一、基本概念界定FlowChannel二、核心特性对比数据生产触发条件生产与消费的关系背压处理机制生命周期

Android ClassLoader加载机制详解

《AndroidClassLoader加载机制详解》Android的ClassLoader负责加载.dex文件,基于双亲委派模型,支持热修复和插件化,需注意类冲突、内存泄漏和兼容性问题,本文给大家介... 目录一、ClassLoader概述1.1 类加载的基本概念1.2 android与Java Class