原文:http://blog.csdn.net/lihongxun945/article/details/48951199

前面我们已经可以在一个Activity中添加一些按钮之类的组件。由于手机的屏幕很小,所以很多时候我们会需要用到工具栏,通过下拉菜单之类的方式来节省空间。

Android 提供了对工具栏按钮的强大支持。

增加一个工具栏按钮

我们现在给 MainActivity 增加一个搜索按钮。增加一个按钮需要做这三件事

一,在 res/menu/activity_main.xml 中增加一个按钮的配置。在自动生成的项目中已经有了这个文件,并且自动创建了一个设置按钮,我们只要增加一个搜索按钮即可

<menu xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools" tools:context=".MainActivity"><item android:id="@+id/action_search"android:icon="@drawable/ic_search_white_24dp"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>

注意其中我们用到了 drawable 和 string 中的两个资源,需要自己去创建一下。

二,在 MainActivity 中引用配置好的按钮

在 MainActivity 中已经声明了一个 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;
}

三,给按钮绑定事件

这里我们也已经有一个 onOptionsItemSelected 方法了,只需要在其中增加一下事件监听就行了

@Override
public boolean onOptionsItemSelected(MenuItem item) {// Handle action bar item clicks here. The action bar will// automatically handle clicks on the Home/Up button, so long// as you specify a parent activity in AndroidManifest.xml.int id = item.getItemId();//noinspection SimplifiableIfStatementswitch (id) {case R.id.action_search: Toast.makeText(this, "你点击了搜索", Toast.LENGTH_SHORT).show();case R.id.action_settings: Toast.makeText(this, "你点击了设置", Toast.LENGTH_SHORT).show();}return super.onOptionsItemSelected(item);
}

增加返回按钮

很多时候,我们需要给不是 MainActivity 的活动都增加一个返回按钮,以方便用户通过返回按钮能返回到上一个活动。安卓提供了返回按钮的默认支持,我们只需要配置一下即可,并不用写返回的逻辑代码。

只需要两步既可以实现返回按钮的功能。这里我们希望能在 ProfileActivity 中增加一个 返回按钮,点击返回MainActivity 中

一,在 AndroidManifest.xml 中 Activity 的声明中加上父活动的声明:

  <activityandroid:name=".ProfileActivity"android:label="@string/title_activity_profile"android:parentActivityName=".MainActivity"><!-- Parent activity meta-data to support 4.0 and lower --><meta-dataandroid:name="android.support.PARENT_ACTIVITY"android:value=".MainActivity" /><intent-filter><action android:name="com.lihongxun.Profile" /><category android:name="android.intent.category.DEFAULT" /></intent-filter></activity>

注意,如果想支持 4.0 及以下设备需要加上 meta-data 那一行,不然就只需要加上android:parentActivityName=".MainActivity” 即可

二,在 ProfileActivity 中启用返回按钮。在 onCreate 函数中加上一行代码即可:

 getSupportActionBar().setDisplayHomeAsUpEnabled(true);

然后再运行试试。

三 覆盖式工具栏

默认情况下,顶部的工具栏是占用空间的,他会把内容区挤到下面去。有时候你可能会希望它是覆盖在内容区上的,特别是你希望能动态显示隐藏工具栏的时候。 
只需要在 styles.xml 中声明使用覆盖式工具栏即可

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"><!-- Customize your theme here. --><item name="android:windowActionBarOverlay">true</item><!-- Support library compatibility --><item name="windowActionBarOverlay">true</item>
</style>

中间的两行 item 就是声明覆盖式工具栏,注意第二行是兼容库的时候用。

转载于:https://www.cnblogs.com/mochaMM/p/5131462.html

Android 学习笔记四:创建工具栏按钮相关推荐

  1. Pro Android学习笔记 四八 ActionBar 1 Home图标区

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! Acti ...

  2. [Android学习笔记四] 自定义Android组件之组合方式创建密码框组件

    Android中所有控件(也称组件)都继承自adnroid.view.View类,android.view.ViewGroup是View类的重要子类,绝大多书的布局类就继承自ViewGroup类. 参 ...

  3. Android学习笔记四十Preference使用

    Preference直译为偏好,博友建议翻译为首选项.一些配置数据,一些我们上次点击选择的内容,我们希望在下次应用调起的时候依旧有效,无须用户再一次进行配置或选择.Android提供preferenc ...

  4. Android学习笔记篇1. 从按钮的点击事件开始

    布局: 在XML文件中写三个按钮,给它们不同的id: (为按钮2绑定点击方法click:android:onClick="click") <?xml version=&quo ...

  5. Android学习笔记(四):android画图之paint之setXfermode

    2019独角兽企业重金招聘Python工程师标准>>> setXfermode 设置两张图片相交时的模式 我们知道 在正常的情况下,在已有的图像上绘图将会在其上面添加一层新的形状. ...

  6. Android学习笔记(四):在Activity中跳转--Intent的使用

    Android学习笔记(四):在Activity中跳转--Intent的使用 上篇,我们实战了一个很小的项目BMI,通过BMI这个项目,可以很好的理解Activity的程序结构,以方便后面高级API的 ...

  7. Android学习笔记 2.5.3 实例——使用SimpleAdapter创建ListView 2.5.4 自动完成文本框(AutoCompleteTextView)的功能与用法

    Android学习笔记 疯狂Android讲义 文章目录 Android学习笔记 疯狂Android讲义 第2章 Android 应用的界面编程 2.5 第4组 UI组件:AdapterView及其子 ...

  8. IOS学习笔记(四)之UITextField和UITextView控件学习

    IOS学习笔记(四)之UITextField和UITextView控件学习(博客地址:http://blog.csdn.net/developer_jiangqq) Author:hmjiangqq ...

  9. Android学习笔记:Android基础知识点(不断更新中)

    1.Android学习笔记:OkHttp 2.Android学习笔记:更新UI的方法(UI线程和非UI线程) 3.Android学习笔记:Volley 4.Android学习笔记:Handler 5. ...

最新文章

  1. 图论-无向图的连通性(POJ1144)(POJ3352)
  2. php免费iphp免费idede,闲鹤草邻
  3. 全球及中国1-氯-3-乙基苯行业发展规划分析及市场前瞻报告2021年版
  4. 实现strlen()(c语言)
  5. CSS padding
  6. java 的原码、补码、反码小总结
  7. 利用Excel VBA实现批量数据分组转置
  8. treeset java_Java TreeSet add()方法与示例
  9. ubuntu11.10 sources.list 资源
  10. 【webservice】Axis2 客户端调用 设置超时时间
  11. 【硬件工程师】元器件选型都不会?
  12. 怎么把matlab的背景改成白色背景图片,如何把图片背景换成白色?
  13. 自学java,能找到工作吗?一位月薪13k的自学程序员分享自己是如何学会java的
  14. 带宽、特征频率、截止频率、-3dB什么意思
  15. C++_primer_plus学习笔记 第14章 C++中的代码重用
  16. 同时定位与地图创建综述
  17. java国际化转换_java 实现国际化 中英文语言切换
  18. Datadog 能成为最大的云监控厂商吗
  19. 深夜有感而发的第一个文章
  20. 高斯消元——解线性方程组+球形空间产生器+开关问题

热门文章

  1. VTK:Texture之TextureThreshold
  2. OpenCV FLANN在数据集中搜索查询图片的实例(附完整代码)
  3. OpenGL Julia Fractal(Julia分形)的实例
  4. C++重载(overload)和重写(覆盖)的区别?
  5. QT的QSGGeometry类的使用
  6. C++ Multimaps
  7. c++11中static类对象构造函数线程安全
  8. 02/03_Pytorch安装、Conda安装Pythorch,换源、pytorch官网、验证、安装jupyter、卸载、安装、启动jupyter、配置Jupyter notebook、使用
  9. ES的多种搜索机制:query string search,query DSL,query filter,full-text search,phrase search,highlight search
  10. fiddler几种功能强大的用法(一)转自:http://www.cnblogs.com/chenshaoping/p/5785010.html