android 复用标题栏,Android基础---使用ToolBar教你打造一个通用的标题栏

现在项目中一般都会使用标题栏,谷歌在2014年推出了新的app bar---ToolBar,代替了以前使用的ActionBar。在做项目中会经常用到这个ToolBar,虽然用的很多,但是自己对它如何用还不是很明白,今天就来简单的学习下这个控件的使用。

效果图

428b82f3157e

效果图

1. 修改app的style

我们如果要使用ToolBar,需要先把原来的ActionBar隐藏起来,就先要设置App的主题为Theme.AppCompat.Light.NoActionBar这种主题,就需要在values/style.xml里面修改Apptheme

的Parent或者parent的parent为Theme.AppCompat.Light.NoActionBar,这样的话才能使用ToolBar得到我们想要的效果。

2. 在布局中使用ToolBar达到效果图

1.标题

首先在布局文件activity_main.xml中:

android:id="@+id/toolbar"

android:layout_width="match_parent"

android:layout_height="48dp"

android:background="#ffffff"

android:gravity="center"

app:titleTextColor="#1d1d1d">

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_gravity="center"

android:text="工作"

android:textColor="#1d1d1d"

android:textSize="16sp" />

需要说明的是,ToolBar其实也是一个ViewGroup,他的布局和LinearLayout类似,所以在使用的过程中,可以使用android:layout_gravity="center"来让TextView居中显示

这个时候的标题栏是这样的:

428b82f3157e

标题栏-无返回箭头-无右侧按钮

2. 右侧按钮

标题栏已经居中显示了,但是我们可能还需要在右侧需要一个按钮来进行一定的操作,比如下面的按钮操作

428b82f3157e

标题栏-无返回箭头

这个怎么实现呢,看下面的代码:

第一种实现

android:id="@+id/toolbar"

android:layout_width="match_parent"

android:layout_height="48dp"

android:background="#ffffff"

android:gravity="center"

app:titleTextColor="#1d1d1d">

android:layout_width="match_parent"

android:layout_height="match_parent">

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_centerInParent="true"

android:layout_gravity="center"

android:text="工作"

android:textColor="#1d1d1d"

android:textSize="16sp" />

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_centerInParent="true"

android:layout_alignParentRight="true"

android:layout_marginRight="12dp"

android:text="按钮"

android:textColor="#1d1d1d"

android:textSize="14sp" />

这里在ToolBar的自定义区放入了一个RelativeLayout,在RelativeLayout里面放置了一个标题和右侧的按钮,右侧的按钮是可以随意定制的,

第二种实现

我们可以利用菜单选项menu来实现这种效果,

首先在res目录下新建menu文件夹,在该文件夹下面建立menu.main.xml,代码如下:

xmlns:app="http://schemas.android.com/apk/res-auto"

xmlns:tools="http://schemas.android.com/tools"

tools:context=".MainActivity">

android:id="@+id/action_share"

android:orderInCategory="90"

android:title="按钮"

app:showAsAction="ifRoom" />

在MainActivity.java中重写onCreateOptionsMenu方法如下所示:

@Override

public boolean onCreateOptionsMenu(Menu menu) {

// Inflate the menu; this adds items to the action bar if it is present.

getMenuInflater().inflate(R.menu.menu_main, menu);

return true;

}

3. 左侧的返回箭头

首先,你得先准备一个返回箭头的图标,然后以下两种都行,都可以实现显示小箭头,并且点击小箭头返回

第一种方案

//设置小箭头

toolbar.setNavigationIcon(R.drawable.common_back_ic);

//设置小箭头点击事件

toolbar.setNavigationOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

finish();

}

});

这种方案是只能在当前的Activity中使用,达不到复用的目的。

第二种方案

在日常的开发中,通常我们会写一个基类,让所有的Activity都继承于这个基类,便于统一管理和减少代码量。

所以我们可以在改基类(比如:BaseActivity.java)中写入以下方法:

/**

* 设置左上角back按钮

*/

public void setBackArrow() {

final Drawable upArrow = getResources().getDrawable(R.drawable.common_back_ic);

//给ToolBar设置左侧的图标

getSupportActionBar().setHomeAsUpIndicator(upArrow);

// 给左上角图标的左边加上一个返回的图标 。对应ActionBar.DISPLAY_HOME_AS_UP

getSupportActionBar().setDisplayHomeAsUpEnabled(true);

//设置actionBar的标题是否显示,对应ActionBar.DISPLAY_SHOW_TITLE。

getSupportActionBar().setDisplayShowTitleEnabled(false);

}

/**

* 点击左上角的返回按钮,结束本Activity

* home就是左上角的小箭头,在toolbar上

*

* @param item

* @return

*/

@Override

public boolean onOptionsItemSelected(MenuItem item) {

if (item.getItemId() == android.R.id.home) {

basefinish();

return true;

}

return super.onOptionsItemSelected(item);

}

/**

* 抽象方法,用于结束activity

*/

public abstract void basefinish();

@Override

public void onBackPressed() {

basefinish();

}

这样的话,我们在的其他Activity只要继承于这个BaseActivity,就需要实现抽象方法,抽象方法会实现返回操作,我们每次只用调用 setBackArrow()这个方法就可以很方便的实现返回小箭头的功能了。简直不能更方便啦!

到此就实现了ToolBar的基本使用,建立了自己的一个标题栏,效果和上面是一样的:

428b82f3157e

标题栏-最终

特此记录!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/527700.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

android html 显示表格边框,tablelayout表格布局详解

如果你已经下载好MT4软件(很多专业外汇平台都有提供下载的),在手机桌面找到图表打开,然后选择好交易商,输入账号密码就可以了。TableLayout怎样实现表格布局表格布局的子对象不能指定 layout_width 属性.宽度永远是 MATCH_PARENT。不过子对象…

华为注册鸿蒙商标与三海经,华为注册了一本《山海经》?除了鸿蒙商标,还有很多...

原标题:华为注册了一本《山海经》?除了鸿蒙商标,还有很多5月25日消息 昨天IT之家报道, 国家知识产权商标局网站显示,,适用于第9类别和第42类别。申请日期为2018年8月24日。此前传闻称,华为OS操作…

android开机渲染视频太久,Android过度渲染优化解决方案

过度绘制是发生的每一次应用要求系统上别的画的东西。“调试GPU透支”工具覆盖上你的屏幕的色彩显示多少次像素被重绘。通过查看GPU透支来改善应用程序的渲染时间。方法1:打开手机设置—>开发人员工具选项—>调试GPU过度绘制—>显示GPU视图更新&#xff0c…

小米android停止,小米由于错误而停止将Android 10推广到MiA3

当小米上周宣布将为Mi A3和Redmi Note 8用户推出Android 10更新时,用户为最终升级他们的设备(至少在软件方面)感到非常兴奋。但是,这种喜悦似乎是短暂的。用户抱怨说,尽管收到更新通知,但他们仍无法下载更新。有些人甚至看到更新在…

html两张图片无缝合成一张,怎么用PS把两张图片合成一张 PS无缝拼图边缘如何处理...

PS怎么把两张图片合成一张?PS无缝贴图怎么用?PS无缝拼接要用什么工具?PS无缝拼图快捷键是什么?PS无缝拼图有色差怎么办?PS把两张图片合成一张边缘怎么修?PS无缝拼接图片边缘如何处理?PS把一张图…

html 属于mvvm框架,前端MVVM框架avalon揭秘 - HTML编译器

MVVM试图更加清晰的讲用户界面(UI)开发从应用程序的业务逻辑与行为中心分离,由于,不少这样的模式的实现都须要利用声明式数据绑定来实现讲View(视图)工做从其余层分离css因此出现了一大堆自定义的声明式的语法:html如:Avalonnode顾名思义,自定…

html的opacity标签,css中opacity是什么意思

css样式 给div样式opacity:0 是什么意思透明度 注意 ie低版本要实现透明度必须用ie特有的滤镜 而非简单的opacityCSS中 not(.active) { opacity: 0.3; } 是什么意思css的opacity让div和里面的div透明了怎样才让div里面的div不透明?不透明度会作用于整个元素以及它所…

frm考试可以用计算机,FRM考试,考生自己可以携带计算器吗?

因为FRM考试有大量的计算题,是需要用到计算器的,近日有考生咨询,参加考试,可以自己携带FRM计算器吗?答案当然是肯定,考生是可以携带FRM计算器的,但是要携带协会官方要求的型号,不是什…

不能访问win7计算机,局域网win7无法访问win10,win7访问不了局域网其他电脑

相信大家都遇到过在访问局域网时遇到过很多错误,导致文件无法正常进行共享,共享打印机等情况,那么当我们遇到这样的问题时应该怎么处理呢?接下来是小编给大家介绍的具体解决方法,一起来看看吧!方法/步骤1、…

计算机开关机命令,电脑自动关机命令

有的时候我们需要让电脑在一段时间工作而不能关机,但是工作完成之后不关机会造成用电浪费,那么使用自动关机命令,就不用担心电脑一直开着会浪费电啦。那么电脑自动关机命令怎么设置呢?下面给大家介绍一下吧。电脑自动关机命令1、首…

iphone计算机的声音怎么办,苹果耳机插电脑上没声音怎么办_苹果耳机插win10电脑没声音如何解决-win7之家...

通常我们将苹果耳机插入电脑的话是可以听歌或者语音说话的,然而近日有不少小伙伴将苹果耳机插入到win10电脑上要使用的时候,却发现没有声音,遇到这样的问题该怎么办呢,可能是设置有问题,本文给大家讲解一下苹果耳机插w…

电气与计算机学院院长论坛报告,我校电子系举办2019年电子信息学科院长论坛暨工程教育新进展研讨会...

2019年11月24日,由我校电子与电气工程系主办的“2019年电子信息学科院长论坛暨工程教育新进展研讨会”在国际会议厅举行。来自东北大学、电子科技大学、东南大学、西安交通大学、西安电子科技大学、大连理工大学、北京航空航天大学、北京邮电大学、燕山大学、南京邮…

楼梯计算机公式,各种楼梯面积的计算公式汇总

楼梯计算体积踏步体积梯板体积踏步体积三角形面积(1/2*踏步宽度*踏步高度)* 梯板净宽 * 踏步个数踏步个数 踏宽数1踏宽数 楼梯净长/踏步宽度(楼梯净长:等于踏步段水平投影净长,即扣减(墙)后的长度)踏步高度 楼梯高度/(踏步个数1)梯板净宽 楼梯宽度扣…

虚拟机随服务器启动,VMware Server中虚拟机随宿主机自动启动

访问虚拟机宿主http://:8222或者 https://:8333用宿主的管理员帐号登陆.Configure OptionsEdit HostSettingsEdit Virtual Machine Startup/ShutdownSettingsRefresh Network List选择上面那个加粗的选项点击即可进入并看到下面的界面!在vmware server里面不用那么麻…

dw服务器文件夹在哪里,Dreamweaver CC

Dreamweaver CC教程:查看文件和文件夹查看文件和文件夹您可以在“文件”面板中查看文件和文件夹,而无论它们是否与 Dreamweaver 站点相关联。在“文件”面板中查看站点、文件或文件夹时,您可以更改查看区域的大小。对于 Dreamweaver 站点&…

服务器不能访问共享文件夹权限,win访问服务器共享文件夹权限设置

win访问服务器共享文件夹权限设置 内容精选换一换开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。在OBS中,用户操作的基本数据单元是对象。OBS …

android 图片放大缩小_贴在手机上的显微镜,轻松放大400倍,化身“蚁人”玩转微观世界...

记得在漫威电影《蚁人》里,男猪脚只要穿上那套黑科技制服,按下开关,“咻”的一声就缩到蚂蚁大小,并操控蚂蚁、昆虫和自己并肩作战!!简直不要太酷!蚁人”进入微观世界,就像正常人去了…

按条件增加列_12个公式解决Excel按条件多列求和,掌握两、三个就够用了

【温馨提示】亲爱的朋友,阅读之前请您点击【关注】,您的支持将是我最大的动力!#职场众生相#日常工作中,在Excel表格中按条件求和也是经常用到的,一般根据条件求和的是一列数据,利用SUMIF函数即可解决&#…

小程序制作预算_小程序商城制作多少钱

现在有做微信小程序商城需求的企业越来越多,在选择小程序制作公司的时候,很多公司上来就报价几万,导致价格太贵让用户望而却步,其实微信小程序制作的价格是不同的,并且不同的制作公司报价也不一样,那么做一…

语言 ota_新增飞屏功能 ARCFOX αT首次OTA升级

[爱卡汽车 行业资讯原创]日前,爱卡汽车获悉,极狐 阿尔法T(ARCFOX αT)进行了首次OTA升级,车主将从12月20日起陆续收到OTA升级的推送消息,该车本次系统升级包大小约340M,升级时间约15分钟。据了解,极狐 阿尔…