Android官方开发文档Training系列课程中文版:添加ActionBar之添加Action按钮

原文地址 : http://android.xsoftlab.net/training/basics/actionbar/adding-buttons.html

添加Action按钮

ActionBar允许在当前的APP上下文内添加很多重要的功能按钮。这样便可以通过图标或者文字作为功能按钮直接展示在ActionBar上。功能按钮如果没有足够空间或无足轻重的按钮都会隐藏在隐藏按钮下。

在XML指定功能

所有的功能按钮包括其它在隐藏按钮下的功能按钮都可以通过XML菜单资源来定义。为了添加功能到ActionBar,需要在res/menu/目录下创建一个新的xml文件。

为每一个需要添加到ActionBar的按钮添加一个< item>标签:

<menu xmlns:android="http://schemas.android.com/apk/res/android" ><!-- Search, should appear as action button --><item android:id="@+id/action_search"android:icon="@drawable/ic_action_search"android:title="@string/action_search"android:showAsAction="ifRoom" /><!-- Settings, should always be in the overflow --><item android:id="@+id/action_settings"android:title="@string/action_settings"android:showAsAction="never" />
</menu>

这里声明了当ActionBar有可用空间的时候Search功能应该作为一个按钮放在ActionBar上。但是设置按钮会总是出现在下拉列表中(默认情况下,所有的功能都会出现在下拉列表中,这对于每一个功能显示的声明你的设计意图是最好的锻炼)。

icon属性这里要求一个图片的资源ID,这里跟的是@drawable/name,这里的name必须是保存在工程中res/drawable/目录下保存的位图图像名称。比如”@drawable/ic_action_search”就是引用了一个名为ic_action_search.png的图片资源。很相似的,title属性也是使用了一个在XML文件中定义的字符串资源。

Note:当为应用创建图标或者其它的位图图像时,drawable文件夹对于提供不同版本的屏幕密度资源来说是很重要的一点。

如果为了兼容像Android 2.1这种低版本而使用了支持库,showAsAction属性对于命名空间android:是不可用的。如果要使用支持库的话必须要在XML中定义自定义的XML命名空间标识符,然后再使用这个命名空间的标识符(自定义的XML命名空间应该基于应用的名称,如果只是在这个文件下操作的话,可以命名为你想命名的任何名称):

<menu xmlns:android="http://schemas.android.com/apk/res/android"xmlns:yourapp="http://schemas.android.com/apk/res-auto" ><!-- Search, should appear as action button --><item android:id="@+id/action_search"android:icon="@drawable/ic_action_search"android:title="@string/action_search"yourapp:showAsAction="ifRoom"  />...
</menu>

添加功能按钮到ActionBar上

为了将菜单按钮直接放置到ActionBar上,需要重写实现activity中的onCreateOptionsMenu()方法,然后加载菜单资源到回调方法的参数menu对象中:

@Override
public boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu items for use in the action barMenuInflater inflater = getMenuInflater();inflater.inflate(R.menu.main_activity_actions, menu);return super.onCreateOptionsMenu(menu);
}

响应功能按钮

当用户点击了其中一个功能按钮或者其它下拉列表中按钮之后,然后系统会调用activity中的
onOptionsItemSelected()方法。在实现的这个方法中,调用回调参数MenuItem的getItemId()方法返回的值与ID进行匹配,去决定是哪个功能按钮按下的。这里的ID便是在XML中声明的< item>标签中的android:id属性中定义的。

@Override
public boolean onOptionsItemSelected(MenuItem item) {// Handle presses on the action bar itemsswitch (item.getItemId()) {case R.id.action_search:openSearch();return true;case R.id.action_settings:openSettings();return true;default:return super.onOptionsItemSelected(item);}
}

为低等级的Activity添加返回按钮

Gmail的返回按钮

Note:Gmail的返回按钮

应用中的所有Activity不都是应用的主入口,所以应该在ActionBar上提供一个返回按钮,以便让用户可以通过点击返回按钮返回到上一个屏幕页面。

当运行在Android 4.1或者更高版本上,又或者是使用了ActionBarActivity的支持库的应用,可以在清单文件中简单的申明ActionBar的返回按钮所要返回的界面:

<application ... >...<!-- The main/home activity (it has no parent activity) --><activity
        android:name="com.example.myfirstapp.MainActivity" ...>...</activity><!-- A child of the main activity --><activity
        android:name="com.example.myfirstapp.DisplayMessageActivity"android:label="@string/title_activity_display_message"android:parentActivityName="com.example.myfirstapp.MainActivity" ><!-- Parent activity meta-data to support 4.0 and lower --><meta-data
            android:name="android.support.PARENT_ACTIVITY"android:value="com.example.myfirstapp.MainActivity" /></activity>
</application>

然后通过setDisplayHomeAsUpEnabled()设置返回按钮为可用状态:

@Override
public void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_displaymessage);getSupportActionBar().setDisplayHomeAsUpEnabled(true);// If your minSdkVersion is 11 or higher, instead use:// getActionBar().setDisplayHomeAsUpEnabled(true);
}

因为现在系统知道了DisplayMessageActivity的父界面为MainActivity,当用户按下了返回按钮,然后系统会适当的导航界面到MainActivity,所以你不需要自己处理返回按钮的点击事件。

关于导航按钮的更多信息,请参见:Providing Up Navigation

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

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

相关文章

快手搜索技术部招聘NLP算法工程师!

星标/置顶小屋&#xff0c;带你解锁最萌最前沿的NLP、搜索与推荐技术工作职责快手搜索技术部招聘&#xff0c;负责研发快手主APP搜索中的关键NLP模型/算法&#xff0c;包括但不限于&#xff1a;适合快手数据生态的NLP预训练语言模型&#xff0c;并推动预训练模型在query解析&am…

论文浅尝 | 解决知识图谱补全中的长尾关系和不常见实体问题

论文笔记整理&#xff1a;汪寒&#xff0c;浙江大学硕士。链接&#xff1a;https://www.aclweb.org/anthology/P19-1024.pdf动机KG的分布遵循长尾分布&#xff0c;大部分关系只有很少的三元组&#xff0c;且大体趋势是关系出现的频率和与之相关的不常见实体的比例呈反比关系。而…

LeetCode 944. 删列造序

1. 题目 题目链接 每个单词的位组成的列非降&#xff0c;最少删除几列。 示例 1&#xff1a;输入&#xff1a;["cba", "daf", "ghi"] 输出&#xff1a;1 解释&#xff1a; 当选择 D {1}&#xff0c;删除后 A 的列为&#xff1a;["c&quo…

Android官方开发文档Training系列课程中文版:添加ActionBar之自定义ActionBar样式

原文地址 : http://android.xsoftlab.net/training/basics/actionbar/styling.html ActionBar的样式 ActionBar提供了为用户提供了常见的习惯性的用户界面以及按钮功能。但是这并不意味着必须要和其它APP看起来一模一样。如果需要设计更符合产品品牌样式风格的话&#xff0c;…

美团 iOS 工程 zsource 命令背后的那些事儿

zsource 命令是什么&#xff1f; 美团 App 在 2015 年就已经基于 CocoaPods 完成了组件化的工作。在组件化的改造过程中&#xff0c;为了能够加速整体工程的构建速度&#xff0c;我们对需要集成进美团 App 的组件进行了二进制化&#xff0c;同时提供一个叫做 cocoapods-binary …

互联网大厂CTR预估前沿进展

文 | Ruhjkg编 | 小鹿鹿lulu源 | 知乎前言CTR&#xff08;click through rate&#xff09;预估模型是广告推荐领域的核心问题。早期主要是使用LR&#xff08;线性回归&#xff09;人工特征工程的机器学习方法&#xff0c;但是存在人工组合特征工程成本较高&#xff0c;不同任务…

以史为鉴 | 为什么要将「知识图谱」追溯到1956年?

本文转载自公众号&#xff1a;AI科技评论。作者 | Claudio Gutierrez 编译 | MrBear编辑 | Tokai以史为鉴&#xff0c;可以知兴替。纵观近期包括 AAAI、NeurIPS、IJCAI 在内的AI顶级会议&#xff0c;对图结构模型的研究是一个绕不开的话题&#xff0c;大量学者涌入这个赛道&…

Android官方开发文档Training系列课程中文版:添加ActionBar之ActionBar浮层效果

原文地址 : http://android.xsoftlab.net/training/basics/actionbar/overlaying.html 浮层效果的ActionBar 默认情况下&#xff0c;ActionBar总是会出现在Activity窗口的顶部&#xff0c;这样会稍微的减少Activity布局的剩余空间。如果需要在用户使用的时候隐藏和显示Action…

美团大规模微服务通信框架及治理体系OCTO核心组件开源

微服务通信框架及治理平台OCTO作为美团基础架构设施的重要组成部分&#xff0c;目前已广泛应用于公司技术线&#xff0c;稳定承载上万应用、日均支撑千亿级的调用。业务基于OCTO提供的标准化技术方案&#xff0c;能够轻松实现服务注册/发现、负载均衡、容错处理、降级熔断、灰度…

领域应用 | 知识结构化在阿里小蜜中的应用

本文转载自公众号&#xff1a;DataFunTalk。分享嘉宾&#xff1a;李凤麟 阿里巴巴 算法专家文章整理&#xff1a;付一韬内容来源&#xff1a;2019知识图谱前沿技术论坛出品社区&#xff1a;DataFun导读&#xff1a;阿里小蜜是阿里巴巴服务领域的重要人工智能产品&#xff0c;是…

内卷的世界,我们是否可以换一种思维生活?

文 | Flood Sung源 | 知乎前言今年最热门的词汇之一当属内卷了。似乎很多行业都由于份额有限而陷入内卷当中。最火的或许是清华学生的这张图&#xff0c;“骑车写代码”&#xff1a;图片来自网络虽然后来知道是这位同学怕关了屏幕程序就断了&#xff0c;但这不禁让人思考&#…

LeetCode 513. 找树左下角的值(按层遍历 queue)

1. 题目 给定一个二叉树&#xff0c;在树的最后一行找到最左边的值。 2. 解题 利用队列按层次遍历顺序&#xff0c;根右左&#xff0c;要求最左边的一个&#xff0c;所以根右左&#xff0c;最后一个队列元素就是答案 class Solution { public:int findBottomLeftValue(TreeN…

Hadoop YARN:调度性能优化实践

背景 YARN作为Hadoop的资源管理系统&#xff0c;负责Hadoop集群上计算资源的管理和作业调度。 美团的YARN以社区2.7.1版本为基础构建分支。目前在YARN上支撑离线业务、实时业务以及机器学习业务。 离线业务主要运行的是Hive on MapReduce&#xff0c; Spark SQL为主的数据仓库作…

LeetCode 39. 组合总和(排列组合 回溯)

1. 题目 给定一个无重复元素的数组 candidates 和一个目标数 target &#xff0c;找出 candidates 中所有可以使数字和为 target 的组合。 candidates 中的数字可以无限制重复被选取。 说明&#xff1a; 所有数字&#xff08;包括 target&#xff09;都是正整数。 解集不能包…

深度学习平台的未来:谁会赢得下半场?

今天这篇文章无意引战&#xff0c;只想从历史发展的角度来谈谈深度学习大背景下的开发工具变迁&#xff0c;以及对未来发展趋势的想象。TensorFlow&#xff1a;无力回天的深度学习里程碑不知道有多少小伙伴是2017年以前入坑深度学习的&#xff0c;那时候人工智能概念火热&#…

论文浅尝 | 基于属性嵌入的知识图谱实体对齐

论文笔记整理&#xff1a;王中昊&#xff0c;天津大学硕士&#xff0c;方向&#xff1a;自然语言处理。来源&#xff1a;AAAI2019论文链接&#xff1a; https://doi.org/10.1609/aaai.v33i01.3301297概述知识图谱之间的实体对齐的任务目标是去找到那些在两个不同的知识图谱上表…

基本功 | Litho的使用及原理剖析

1. 什么是Litho&#xff1f; Litho是Facebook推出的一套高效构建Android UI的声明式框架&#xff0c;主要目的是提升RecyclerView复杂列表的滑动性能和降低内存占用。下面是Litho官网的介绍&#xff1a; Litho is a declarative framework for building efficient user interfa…

论文浅尝 | 基于深度强化学习将图注意力机制融入知识图谱推理

论文笔记整理&#xff1a;陈名杨&#xff0c;浙江大学直博生。Introduction知识图谱&#xff08;KGs&#xff09;在很多NLP的下游应用中起着越来越重要的作用。但是知识图谱常常是不完整的&#xff0c;所以解决知识图谱补全的任务也非常重要。主要有三种方法来完成知识图谱补全…

聊聊如何提升推荐系统的结果多样性

文 | 洪九(李戈)源 | 知乎个性化推荐系统的出现为处理信息过载问题提供了一个有效的工具&#xff0c;已经成为互联网各大平台(电商、信息流等)的标配&#xff0c;并在技术(个性化召回、个性化排序等)上取得了长足的发展&#xff0c;逐渐从传统模型过度到深度学习时代。但是&…

论文浅尝 | GNN with Generated Parameters for Relation Extraction

论文笔记整理&#xff1a;申时荣&#xff0c;东南大学博士生。地址&#xff1a;https://arxiv.org/pdf/1902.00756.pdf来源&#xff1a;ACL2019在许多自然语言处理任务&#xff08;例如关系提取&#xff09;中&#xff0c;多跳关系推理是必不可少的&#xff0c;而图神经网络&am…