添加导航按钮
在导航栏中你可以添加一些重要操作的按钮,它们会以图标或文本的形式显示.对于不能在导航栏中完全显示或不是很重要的操作按钮可以将其添加到隐藏的下拉菜单中.如图:
(1).通过XML定义操作按钮:
所有的操作按钮包括下拉菜单中的按钮选项都在一个XML的菜单资源文件中定义.在导航栏中添加按钮,首先在res/menu/路径下创建一个XML文件.
在文件中添加"<item>"元素,每一个"<item>"元素对应一个按钮.如下:
res/menu/main_activity_actions.xml
<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>
上面的配置表示将会在首页的导航栏中显示一个搜索按钮,设置按钮将会常驻下拉菜单中.(默认情况下,所有的按钮都包含在下拉菜单中,但最好是根据你的设计意图为每一个按钮指定行为)
"icon"属性需要设置一个资源ID来指定图片,"@drawable/"后面的名称必须是你在"res/drawable/"文件夹中
保存的图片名称.例如,"@drawable/ic_action_search"引用的是"ic_action_search.png"图片.同样的,"title"属性引用"res/values/"路径下的XML文件中的字符串资源.就像我们在"创建第一个android应用"课程中学习的字符串资源引用一样.
备注:当为你的程序创建图标和图片时,为不同分辨率的屏幕提供不同的图片版本是非常重要的.这有利于你的程序在不同的设备上都能按预想的结果运行.
如果你使用支持库使你的程序的兼容版本低到了Android2.1,那么"showAsAction"属性在"android"名称空间下是不可用的.你可以使用支持库提供的属性代替.你必须自定义命名空间,并将这个命名空间作为这个属性的前缀.(虽然允许你定义任何的命名空间,但是最好还是根据你的工程名称来定义.这个命名空间只在声明它的文件中有效.)
例如:
res/menu/main_activity_actions.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>
(2).将操作按钮添加到导航栏
通过实现"onCreateOptionsMenu()"回调函数,将菜单资源添加到"Menu"对象中,将按钮添加到导航栏中.如:
@Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu items for use in the action bar MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.main_activity_actions, menu); return super.onCreateOptionsMenu(menu); }
(3).响应按钮操作
当用户点击导航栏中的一个按钮或是下拉菜单中的选项时,系统会调用对应的Activity中的"onOptionsItemSelected()"方法.在这个方法的实现中调用"getItemId()"方法来确定哪个按钮被点击了.返回的ID值对应之前在"<item>"元素中声明的 "android:id"的值.代码如下:
@Override public boolean onOptionsItemSelected(MenuItem item) { // Handle presses on the action bar items switch (item.getItemId()) { case R.id.action_search: openSearch(); return true; case R.id.action_settings: openSettings(); return true; default: return super.onOptionsItemSelected(item); } }
(4).为活动页面添加返回按钮
在你的程序中,不是所有的活动页面都是首页.为了方便用户操作,应该为所有活动页面设置一个包含罗辑层次结构的返回按钮.
当运行Android4.1(API 16)及更高时,或通过Support Library使用"ActionBarActivity"时,只需要在"manifest"文件中为需要在导航栏中显示返回按钮的活动声明一个父活动即可.例如:
<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>
然后通过调用"setDisplayHomeAsUpEnable()"方法为返回按钮设置图标:
@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",当用户点击返回按钮时,系统就会自动导航到
它的父活动页面.你不需要为返回按钮注册监听事件.
相关推荐
搜索功能:在导航栏中添加搜索框或搜索按钮,这样用户可以快速搜索所需的商品或信息。 面包屑导航:在网站上添加面包屑导航,这样用户可以清楚地了解当前位置以及如何回到上一个页面或网站首页。 自定义样式:根据您...
0001-导航栏添加按钮隐藏虚拟按键,上滑调出虚拟按键
android demo,navigationBar,导航栏,左边按钮,右边按钮,中间文字的实现
* noSticky: 取消导航栏粘性布局(不占头部导航栏位置),默认不取消 * opacity: 导航栏透明度,默认1不透明 * showNavBtn: 是否显示左侧导航按钮,默认true显示 * navIcon: 用户自定义导航按钮图标路径 * ...
压缩包里面有一份补丁,用于Android 11系统,所用的芯片是RK3568 跟着补丁修改对应代码就可以实现 动态控制状态栏、导航栏的显示和隐藏。
Android 13 原生系统下拉状态栏中是没有快捷截图按钮,现在需要添加快捷截图功能。 涉及修改的文件如下: modified: vendor/mediatek/proprietary/packages/apps/SystemUI/res/values/config.xml modified: vendor/...
动态生成的对话框中按照要求添加的根据按钮可切换的导航栏程序,可做为参考,也可直接引入自己程序中使用。
对IE的导航栏添加一个按钮进行操作
NULL 博文链接:https://dingran.iteye.com/blog/1766186
在开发中发现uni-app原生导航栏也能实现一些顶部自定义按钮+搜索框,只需在page.json里面做一些配置即可。设置app-plus,配置编译到App平台的特定样式。dcloud平台对app-plus做了详细说明:app-plus配置,需注意 ...
主要介绍了iOS应用开发中导航栏按钮UIBarButtonItem的添加教程,文中详细介绍了使用UINavigationController导航控制器添加的过程,需要的朋友可以参考下
上下移动界面导航栏显示和隐藏 屏蔽系统的手势,添加自己的手势滑动 自定义导航栏返回按钮
0001--RK3566-安卓11--下拉状态栏添加以太网开关
快捷菜单栏VSCode扩展在Visual Studio Code的编辑器菜单栏中,向编辑器菜单工具栏添加按钮,例如美化,显示打开的文件,保存,切换终端,活动栏,查找替换等。 利用那个空的菜单栏! 提高生产率! :camera:屏幕快照...
(续3)Python3.x+Pyqt5实现主窗体里树形导航栏按钮驱动分割器QSplitter动态载入多个子窗体,且第3个子窗体还实现了界面与业务逻辑分离。
UINavigation-SXFixSpace 导航栏按钮位置偏移的解决方案,兼容iOS7〜iOS13,可自定义间距 添加支持cocoapods, pod "UINavigation-SXFixSpace", "~> 1.2.4
为monorepo中的每个软件包添加带有按钮的导航栏 简短的视频示例: : 扩展安装 Chrome浏览器: : Firefox: : 相当简单且最小的浏览器扩展程序,用于解析lerna.json或package.json文件,如果发现它是一个...
最近遇到一个关于导航栏返回按钮的问题,因为之前项目里面都是用的系统默认的返回按钮样式所以没有想过要去更改,后来有需要将返回按钮箭头旁边的文字去掉,同时将该返回按钮的点击事件重新定义。一开始尝试自定义...
Python3.x+Pyqt5实现主窗体里树形导航按钮驱动分割器QSplitter动态载入多个子窗体,而且第3个子窗体还实现了界面与业务逻辑分离。
对于一些电商平台来说,当商品被转发后会很影响客户查看其它产品和首页,这时候就需要使用自定义导航栏自己写一个“胶囊按钮”。这篇文章主要介绍了详见微信小程序胶囊按钮返回|首页自定义导航栏,需要的朋友可以参考...