本文前三步演示了为Toolbar添加返回键并实现返回的步骤,第四步给出了设置返回键颜色的方法。

1.在xml布局中引用toolbar:

  1. <android.support.design.widget.AppBarLayout
  2. android:layout_alignParentTop="true"
  3. android:layout_width="match_parent"
  4. android:layout_height="wrap_content"
  5. android:theme="@style/AppTheme.AppBarOverlay">
  6.  
  7. <android.support.v7.widget.Toolbar
  8. android:id="@+id/toolbar"
  9. android:layout_width="match_parent"
  10. android:layout_height="?attr/actionBarSize"
  11. android:background="?attr/colorPrimary"
  12. app:popupTheme="@style/AppTheme.PopupOverlay" />
  13.  
  14. </android.support.design.widget.AppBarLayout>

2.为ToolBar添加返回键:

  1. public class NavAboutActivity extends AppCompatActivity {
  2. @Override
  3. protected void onCreate(@Nullable Bundle savedInstanceState) {
  4. super.onCreate(savedInstanceState);
  5. setContentView(R.layout.activity_nav_about);
  6. android.support.v7.widget.Toolbar toolbar=findViewById(R.id.toolbar);
  7. setSupportActionBar(toolbar);
  8. getSupportActionBar().setDisplayHomeAsUpEnabled(true);//添加默认的返回图标
  9. getSupportActionBar().setHomeButtonEnabled(true); //设置返回键可用
  10. }
  11. }

3.实现点击返回键结束当前界面

有两种实现方法.

第一种仅需要在清单文件中声明返回的父Activity,用这种方式有过渡动画,比直接监听按钮后调用finish()的做法自然:

  1. <application ... >
  2. ...
  3.  
  4. <!-- The main/home activity (it has no parent activity) -->
  5.  
  6. <activity
  7. android:name="com.example.myfirstapp.MainActivity" ...>
  8. ...
  9. </activity>
  10.  
  11. <!-- A child of the main activity -->
  12. <activity
  13. android:name="com.example.myfirstapp.MyChildActivity"
  14. android:label="@string/title_activity_child"
  15. android:parentActivityName="com.example.myfirstapp.MainActivity" >
  16.  
  17. <!-- Parent activity meta-data to support 4.0 and lower -->
  18. <meta-data
  19. android:name="android.support.PARENT_ACTIVITY"
  20. android:value="com.example.myfirstapp.MainActivity" />
  21. </activity>
  22. </application>

第二种是直接实现按钮的监听事件,调用finish()方法:

  1. @Override
    public boolean onOptionsItemSelected(MenuItem item) {
  2.  
  3. if(item.getItemId()==android.R.id.home){
    finish();
    }
  4.  
  5. return super.onOptionsItemSelected(item);
    }

4.设置返回键颜色

在style.xml的相应Style中添加属性:

  1. <item name="colorControlNormal">@android:color/white</item>

参考:

关于Android中ToolBar返回

Add an up action

安卓开发之Toolbar返回键的更多相关文章

  1. 安卓开发之Toolbar

    根据官网的教程,发现实现与预期不一致,查看相关资料自己整理了一下(官网开发文档:https://developer.android.com/training/appbar/setting-up.htm ...

  2. 奇葩问题之ToolBar返回键失效

    今天遇到一个奇葩问题,先说现象:接口调用成功,但是在后台业务上报错时(比如:手机号已经被注册过时,接口调用成功,但是后台返回了错误信息:手机号已被注册),toolBar的返回键失效了. 后来仔细看了一 ...

  3. React Native组件之BackAndroid !安卓手机的物理返回键的使用

    ok!在安卓手机上,当我们用物理返回键的时候,会以一次性的将程序退出来,这样是很不好的体验,所以就需要使用RN的物理返回键组件:BackAndroid,其原理也就是 分析路由,然后pop()这样! o ...

  4. 安卓开发之mqtt协议

    首先物联网协议mqtt协议是基于tcp/ip协议的,使用了官方的mqttclient框架/**初始化mqttclient*/private void init() { try { //MQTT的连接设 ...

  5. 安卓开发之ListAdapter(二)

    今天我们来学习一下ArrayAdapter: ArrayAdapter是安卓中最简单的适配器.使用ArrayAdapter(数组适配器),需要把数据源存 放至数组里面来显示. •构造函数: publi ...

  6. 安卓开发之activity详解(sumzom)

    app中,一个activity通常是指的一个单独的屏幕,相当于网站里面的一个网页,它是对用户可见的,它上面可以显示一些控件,并且可以监听处理用户的时间做出响应. 那么activity之间如何进行通信呢 ...

  7. 安卓开发之ListAdapter(一)

    Adapter常用来管理数据,是连接后端数据和前端显示的适配器接口,是数据和UI(view)之间一个重要的纽带.再常见的view(listview.gridview)等地方都需要用到adapter,下 ...

  8. 安卓开发之UIwebview

    web view在安卓开发中是比较常见的UI,像微信的新闻模块就采用了这个,他的作用越来越广,下面我把以前做的贴了出来,如果有更好的办法,希望大神不吝赐教哈,嘿嘿,纯代码来了: java代码 publ ...

  9. 安卓开发之json解析

    1.从网页获取json返回字符串 public class ReadNet extends AsyncTask<URL, Integer, String> { @Override      ...

随机推荐

  1. Markdown使用TOC自动生成导航栏

    经常使用markdown 的玩家一定很想要一个自动生成的导航栏吧,自己写的基本思路就是 轮询监听滚动条的位置,通过抛锚和跳锚实现,这里介绍一下今天的主角,markdown-toc插件: https:/ ...

  2. k8s管理机密信息(9)

    一.启动应用安全信息的保护: Secret介绍: 应用启动过程中可能需要一些敏感信息,比如访问数据库的用户名密码或者秘钥.将这些信息直接保存在容器镜像中显然不妥,Kubernetes 提供的解决方案是 ...

  3. JAVA-开发构建Gradle项目安装使用教程

    一.简介: Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化构建开源工具.它使用一种基于Groovy的特定领域语言(DSL)来声明项目设置,目前也增加了基于Kotl ...

  4. Sql 中常用日期转换Convert(Datetime) convert datetime

    Convert(data_type,expression[,style]) Convert(varchar(10),字段名,转换格式) 说明:此样式一般在时间类型(datetime,smalldate ...

  5. iOS-MBProgressHUD框架使用(转)

    MBProgressHUD是一个开源类库,实现了各种样式的提示框, 下载地址:https://github.com/jdg/MBProgressHUD,然后把两个MBProgressHUD.h和MBP ...

  6. Gogs 设置Git钩子实现项目自动部署

    每次修改代码需要上传到 git仓库,查看了一下 Gogs 使用文档 发现有 web钩子 这个选项,然后发现了本地可实现的 Git钩子. 注意:需要用到管理员帐号登录,进行仓库的设置. 有三种状态分别是 ...

  7. ORA-00054:Orcacle表锁定

    查询被锁的session_id select session_id from v$locked_object; 查询结果----------------------SESSION_ID8 查询被锁se ...

  8. 关于SVM的一些知识点

    SVM支持向量机 定义:支持向量机是主要用于解决分类问题的学习模型.它的基本模型是在特征空间中寻找间隔最大化的分离超平面的线性分类器. 分类 1-当训练样本线性可分,通过硬间隔最大化,学习一个线性分类 ...

  9. 华为ENSP命令大全

    实验命令___ENSP   一. 生成树STP 注:桥优先级取值越小,则优先级越高,通过配置优先级(开销值cost)可控制根桥选举.当根桥发生故障则会选举新的根桥,当故障恢复根桥重新选举.通过设置端口 ...

  10. (生鲜项目)08. ModelSerializer 实现商品列表页, 使用Mixin来实现返回, 以及更加方便的ListAPIView, 以及分页的设置

    第一步: 学会使用ModelSerializer, 并且会使用ModelSerializer相互嵌套功能 1. goods.serializers.py from rest_framework imp ...