Android 官方DEMO - ActionBarCompat-Basic
ActionBarCompat-Basic Demo下载地址:https://github.com/googlesamples/android-ActionBarCompat-Basic/#readme
Android ActionBar样式生成器:
ActionBar官方说明:https://developer.android.google.cn/reference/android/support/v7/app/ActionBar
Menu官方说明:https://developer.android.google.cn/reference/android/view/Menu
Menu官司方说明:https://developer.android.google.cn/reference/android/view/MenuItem
ActionBarCompat-Basic
示例展示了在基本页面中创建和使用ActionBar菜单:
- 创建Activity并继承AppCompatActivity;
- 在res资源文件夹下创建menu文件夹,并在menu文件夹下创建主菜单布局xml;
- 重写onCreateOptionsMenu()方法,创建并初始化菜单;
- 重写onOptionsItemSelected()方法。
import android.os.Bundle;
import android.support.v4.view.MenuItemCompat;
import android.support.v7.app.AppCompatActivity;
import android.view.Menu;
import android.view.MenuItem;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.sample_main);
}
/**
* 创建并实例化菜单,添加菜单项,返回true则显示菜单。
*/
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// 绑定菜单布局文件,布局文件已定义两个菜单子项refresh和settings
getMenuInflater().inflate(R.menu.main, menu);
// 动态添加location菜单子项,菜单子项id在文件ids.xml中定义
// 第一个int类型的groupID参数,代表的是组概念,你可以将几个菜单项归为一组,以便更好的以组的方式管理你的菜单按钮。
// 第二个int类型的item ID参数,代表的是项目编号。这个参数非常重要,一个itemID对应一个menu中的选项。在后面使用菜单的时候,就靠这个item ID来判断你使用的是哪个选项。
// 第三个int类型的orderID参数,代表的是菜单项的显示顺序。默认是0,表示菜单的显示顺序就是按照add的显示顺序来显示。(参考MenuItem.getOrder())
// 第四个String类型的title参数,表示选项中显示的文字。
MenuItem locationItem = menu.add(0, R.id.menu_location, 0, R.string.menu_location);
locationItem.setIcon(R.drawable.ic_action_location);
// 设置菜单子项如何显示,可选值:
// SHOW_AS_ACTION_ALWAYS:总是显示在ActionBar里,建议最多不超过两个子项,太多在小屏幕设备上会影响体验。
// SHOW_AS_ACTION_IF_ROOM:由系统决定如何摆放。
// SHOW_AS_ACTION_NEVER:不将子项显示在ActionBar里。
// SHOW_AS_ACTION_WITH_TEXT:子项显示为文本按钮,不管是否有设置图标。
// 原Demo使用的是MenuItemCompat.setShowAsAction(locationItem, MenuItem.SHOW_AS_ACTION_IF_ROOM);但这个方法在API 26以后已经被其他方法取代。
locationItem.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
return true;
}
/**
* 菜单事件处理,如果处理完成,则返回true
*/
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.menu_refresh:
// Here we might start a background refresh task
return true;
case R.id.menu_location:
// Here we might call LocationManager.requestLocationUpdates()
return true;
case R.id.menu_settings:
// Here we would open up our settings activity
return true;
}
return super.onOptionsItemSelected(item);
}
}
ActionBar主布局文件,menu文件夹下的main.xml,另外Android Studio提供快速创建菜单布局文件的方法:
- 在res文件夹右键选择new->android resource directory;
- 弹出对话框后,在Directory name中输入menu,Resource type中选择menu,然后确定;
- 此时res文件夹下已创建menu文件夹,右键点击menu文件夹,选择new->Menu resource file;
- 弹出对话框后,输入File name,然后确定即可。
<?xml version="1.0" encoding="utf-8"?>
<!-- 这里添加了新的support命名空间,允许以向后兼容的方式使用showAsAction属性 -->
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:support="http://schemas.android.com/apk/res-auto" >
<!-- showAsAction设置为ifRoom -->
<item
android:id="@+id/menu_refresh"
android:icon="@drawable/ic_action_refresh"
android:title="@string/menu_refresh"
support:showAsAction="ifRoom"/> <!-- showAsAction设置为never -->
<item
android:id="@+id/menu_settings"
android:icon="@drawable/ic_action_settings"
android:title="@string/menu_settings"
support:showAsAction="never"/> </menu>
values文件夹下创建ids.xml文件,用于定义动态添加的子菜单location:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<item name="menu_location" type="id"/>
</resources>
Demo截图如下,点击右上角三点弹出settings菜单子项:

Android 官方DEMO - ActionBarCompat-Basic的更多相关文章
- android 官方demo地址
android官方demo地址都放在了github上:https://github.com/googlesamples
- Android 官方Demo ActionBarCompat-Styled
ActionBarCompat-Styled Demo下载地址:https://github.com/googlesamples/android-ActionBarCompat-Styled/#rea ...
- Android 官方DEMO BasicNetworking
本示例演示如何使用Android API检查网络连接. Demo下载地址:https://github.com/googlesamples/android-BasicNetworking/#readm ...
- 使用Red5-Pro Android官方Demo拆解分析(一)
一.配置文件 1.导入库文件jniLibs到main文件夹下 2.导入red5streaming.jar 3.在build里到入其他的包,代码如下: dependencies { implementa ...
- 如何成功实施SDL提供的官方Android平台Demo
如何成功实施SDL提供的官方Android平台Demo 作者:雨水 日期:2014-4-30 编写说明:SDL的官方提供了一个Anroid的demo模板SDLActivity,无法直接执行,依照官方 ...
- 解决Android微信支付官方demo运行失败
Android微信支付官方demo运行失败,在此简单记录一下解决步骤 1.httpclient错误 官方给的demo是eclipse的,打开之后提示httpclient的错误,我知道在as下解决htt ...
- android开源项目之OTTO事件总线(二)官方demo解说
官方demo见 https://github.com/square/otto 注意自己该编译版本为2.3以上,默认的1.6不支持match_parent属性,导致布局文件出错. 另外需要手动添加an ...
- React Native官方DEMO
官方给我们提供了UIExplorer项目,这里边包含React Native的基本所有组件的使用介绍和方法. 运行官方DEMO步骤如下 安装react native环境 React Native项目源 ...
- 改造 Android 官方架构组件 ViewModel
前言 Android 官方架构组件在今年 5 月份 Google I/O 大会上被公布, 直到 11 月份一直都是测试版, 由于工作比较繁忙, 期间我只是看过类似的文章, 但没有在实际项目中使用过, ...
随机推荐
- TypeError: Cannot red property 'style' of null 错误解决
错误信息如下: JSP代码如下: <c:if test ="${not empty excelErrors}"> <div id="excelError ...
- .Net程序员学用Oracle系列(19):导出、导入(备份、还原)
1.传统的导出/导入工具 1.1.EXP 命令详解 1.2.IMP 命令详解 1.3.EXP/IMP 使用技巧 2.新的导出/导入工具 2.1.EXPDP/IMPDP 参数说明 2.2.EXPDP/I ...
- Angular2入门:TypeScript的模块
一.export 二.import 三.模块的默认导出
- iOS UITextfield只允许输入数字和字母,长度限制
-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementSt ...
- 第一册:lesson seventy one.
原文: He is awful. A:What's Ron Marston like , Pauline? B:He is awful.He telephoned me four times yest ...
- C#正则表达式。
什么是正则表达式: 正则表达式是用来进行文本处理的技术,是语言无关的. 是由普通字符和特殊字符组成的文字模式,用来描述字符串的特征. 元字符: 1. . : 除 \n 以外的任意的单个字符. ...
- .net反编译的九款神器(转载)
.net反编译的九款神器 转载来源: https://www.cnblogs.com/zsuxiong/p/5117465.html 本人搜集了下8款非常不错的.Net反编译利器: 1.Reflec ...
- [android] activity横竖屏切换的生命周期
模拟器横竖屏切换,ctrl+f11 界面activity会销毁,重新打开创建 第一种做法: 定死就是横屏 在清单文件,<activity/>节点部分,添加属性,设置屏幕朝向 android ...
- 解决mysql服务无法启动的问题
今天,mysql突然无法启动了. 解决办法记录一下: 1.删除data文件 我的:C:\Program Files\MySQL\MySQL Server 5.7\data 注意:这个文件可能在你一直试 ...
- 腾讯云下的CentOS7 配置 Apache服务器
第一步 :安装Apache服务程序(软件包名为httpd) * yum install httpd 第二步:配置httpd.conf文件 * vi /etc/httpd/conf/httpd.conf ...