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数据库Room的实际使用过程总结

《Android数据库Room的实际使用过程总结》这篇文章主要给大家介绍了关于Android数据库Room的实际使用过程,详细介绍了如何创建实体类、数据访问对象(DAO)和数据库抽象类,需要的朋友可以... 目录前言一、Room的基本使用1.项目配置2.创建实体类(Entity)3.创建数据访问对象(DAO

Android WebView的加载超时处理方案

《AndroidWebView的加载超时处理方案》在Android开发中,WebView是一个常用的组件,用于在应用中嵌入网页,然而,当网络状况不佳或页面加载过慢时,用户可能会遇到加载超时的问题,本... 目录引言一、WebView加载超时的原因二、加载超时处理方案1. 使用Handler和Timer进行超

Android实现任意版本设置默认的锁屏壁纸和桌面壁纸(两张壁纸可不一致)

客户有些需求需要设置默认壁纸和锁屏壁纸  在默认情况下 这两个壁纸是相同的  如果需要默认的锁屏壁纸和桌面壁纸不一样 需要额外修改 Android13实现 替换默认桌面壁纸: 将图片文件替换frameworks/base/core/res/res/drawable-nodpi/default_wallpaper.*  (注意不能是bmp格式) 替换默认锁屏壁纸: 将图片资源放入vendo

Android平台播放RTSP流的几种方案探究(VLC VS ExoPlayer VS SmartPlayer)

技术背景 好多开发者需要遴选Android平台RTSP直播播放器的时候,不知道如何选的好,本文针对常用的方案,做个大概的说明: 1. 使用VLC for Android VLC Media Player(VLC多媒体播放器),最初命名为VideoLAN客户端,是VideoLAN品牌产品,是VideoLAN计划的多媒体播放器。它支持众多音频与视频解码器及文件格式,并支持DVD影音光盘,VCD影

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

android-opencv-jni

//------------------start opencv--------------------@Override public void onResume(){ super.onResume(); //通过OpenCV引擎服务加载并初始化OpenCV类库,所谓OpenCV引擎服务即是 //OpenCV_2.4.3.2_Manager_2.4_*.apk程序包,存

从状态管理到性能优化:全面解析 Android Compose

文章目录 引言一、Android Compose基本概念1.1 什么是Android Compose?1.2 Compose的优势1.3 如何在项目中使用Compose 二、Compose中的状态管理2.1 状态管理的重要性2.2 Compose中的状态和数据流2.3 使用State和MutableState处理状态2.4 通过ViewModel进行状态管理 三、Compose中的列表和滚动

论文阅读笔记: Segment Anything

文章目录 Segment Anything摘要引言任务模型数据引擎数据集负责任的人工智能 Segment Anything Model图像编码器提示编码器mask解码器解决歧义损失和训练 Segment Anything 论文地址: https://arxiv.org/abs/2304.02643 代码地址:https://github.com/facebookresear

数学建模笔记—— 非线性规划

数学建模笔记—— 非线性规划 非线性规划1. 模型原理1.1 非线性规划的标准型1.2 非线性规划求解的Matlab函数 2. 典型例题3. matlab代码求解3.1 例1 一个简单示例3.2 例2 选址问题1. 第一问 线性规划2. 第二问 非线性规划 非线性规划 非线性规划是一种求解目标函数或约束条件中有一个或几个非线性函数的最优化问题的方法。运筹学的一个重要分支。2