ActionBar菜单的特殊用法
ActionProvider:
可以为Action bar的菜单按钮添加子菜单。
新建了一个MyActionProvider继承自ActionProvider,重写hasSubMenu()方法并返回true,然后在onPrepareSubMenu通过调用SubMenu的add()方法添加子菜单。
public class MyActionProvider extends ActionProvider { public MyActionProvider(Context context) { super(context); } @Override public View onCreateActionView() { return null; } @Override public void onPrepareSubMenu(SubMenu subMenu) { subMenu.clear(); subMenu.add("sub item 1").setIcon(R.drawable.ic_launcher) .setOnMenuItemClickListener(new OnMenuItemClickListener() { @Override public boolean onMenuItemClick(MenuItem item) { return true; } }); subMenu.add("sub item 2").setIcon(R.drawable.ic_launcher) .setOnMenuItemClickListener(new OnMenuItemClickListener() { @Override public boolean onMenuItemClick(MenuItem item) { return false; } }); } @Override public boolean hasSubMenu() { return true; } }
通过设置android:actionProviderClass将MyActionProvider加入菜单。为了兼容android 2.x,添加xmlns:yourappname="http://schemas.android.com/apk/res-auto",将android:改成yourapp:。
<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:helloworld="http://schemas.android.com/apk/res-auto" > <item android:id="@+id/MyActionProvider" android:icon="@drawable/MyActionProvider" android:orderInCategory="1" android:title="MyActionProvider" helloworld:actionProviderClass="com.example.helloworld.MyActionProvider" helloworld:showAsAction="ifRoom"/> </menu>
添加子菜单的另一种方法:在菜单资源文件<item></item>中插入<menu></menu>。
ActionView:
在ActionBar直接显示一个具体的视图。
在menu资源中通过actionViewClass属性来指定一个控件,通常使用SearchView,也可以是自定义控件。为兼容android 2.x,使用SearchView时导入android.support.v7.widget.SearchView,而不是android.widget.SearchView。
<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:helloworld="http://schemas.android.com/apk/res-auto" > <item android:id="@+id/CustomView" android:icon="@drawable/CustomView" android:orderInCategory="1" android:title="CustomView" helloworld:actionViewClass="com.example.helloworld.CustomView" helloworld:showAsAction="ifRoom|collapseActionView"/> </menu>
在Activity的onCreateOptionsMenu(Menu menu)函数获取ActionView。
@Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.optionsmenu, menu); MenuItem menuItem = menu.findItem(R.id.CustomView); CustomView customView = (CustomView) menuItem.getActionView(); //设置CustomView ...... return true; }
相关推荐
在某些设计风格或者品牌规范中,可能需要对ActionBar的溢出菜单(Overflow Menu)的颜色进行自定义,以符合整体UI的设计需求。本篇文章将详细介绍如何修改ActionBar的溢出菜单颜色。 首先,我们要理解溢出菜单的...
本文将深入探讨如何在ActionBar中实现下拉菜单功能,这在很多应用中都是一个常见的交互设计。 首先,我们需要理解ActionBar的基本概念。ActionBar是Android 3.0(API级别11)引入的一个UI元素,它为用户提供了一种...
本文将深入探讨Android ActionBar的其他用法,包括实现搜索功能、分享功能、隐藏复杂布局以及如何模仿Google Play和微信的设计,以提升用户体验。 首先,让我们谈谈搜索功能。在ActionBar中集成搜索视图(Action...
本篇文章将详细探讨如何通过`ActionBar`来实现分页菜单,并结合`ActivityGroup`和`TextView`布局,实现动态滚动效果。 首先,`ActionBar`的分页功能通常借助`TabHost`或`ViewPager`来完成。`TabHost`在早期版本的...
本文实例讲述了Android ActionBar搜索功能用法。分享给大家供大家参考,具体如下: 使用ActionBar SearchView时的注意点: 首先要吐槽一下Android的官方Guide文档 ,关于用法讲得不明确,可能是一直没更新的原因吧。...
本教程将详细讲解如何在`ActionBar`中增加一个自定义的`Setting`菜单,并使用`PopupWindow`来实现这一功能。 首先,我们需要了解`ActionBar`的基本使用。在Android API 11及以上版本,我们可以通过`...
本篇文章将详细讲解如何在低版本Android系统上实现和设置ActionBar,以及如何添加菜单项。 首先,为了在低版本Android设备上使用ActionBar,我们需要引入appcompat-v7库。在项目的build.gradle文件中添加以下依赖:...
本文将深入探讨`ActionBar`的自定义风格和高级用法,旨在帮助开发者提升应用程序的用户体验和视觉效果。 一、`ActionBar`基础 `ActionBar`是Android 3.0(API级别11)引入的,它提供了许多功能,如显示应用图标、...
通过阅读这篇文章,开发者可以了解到ActionBar的基本用法以及一些高级特性。 【标签】"actionbar demo" 说明这个项目专注于展示和练习ActionBar的使用,对于初学者来说,这是一个很好的实践平台,可以加深对Android...
- **未直接显示的 Action 项**:未出现在 ActionBar 上的菜单项将被归类到一个名为“更多…”的下拉菜单中。 - **Tabs 功能**:支持在多个 Fragments 间通过标签进行快速切换。 - **下拉列表**:提供一种简单的导航...
在这个“MyActionBar”示例中,我们将深入探讨ActionBar的基础知识和用法。** 1. **基本结构与布局** - ActionBar通常位于Activity的顶部,展示应用的标识和主要操作。 - 它由几个部分组成:应用图标、活动标题、...
在Android应用开发中,创建一个类似微信6.0版本的底部滑动菜单栏与导航栏是一种常见的需求。这个项目利用了ViewPager、RadioGroup和ActionBar等组件来实现这一功能。下面将详细讲解这些知识点。 首先,`ViewPager`...
8. **使用ActionBar的SplitActionBar**:在竖屏模式下,当ActionBar无法容纳所有菜单项时,部分菜单项会移到屏幕底部,形成Split ActionBar。 9. **Overflow Menu**:对于没有物理菜单键的设备,ActionBar中的三个...
在Android应用开发中,ActionBar是一个重要的组件,它位于应用程序界面的顶部,通常包含应用的logo、标题、菜单项以及其他的导航元素。对于Android 3.0以下版本,原生的ActionBar功能相对较弱,但开发者可以通过...
这个“android actionbar简单实例”是针对Android新手或者开发者想要了解和掌握ActionBar基本用法的一个实践项目。在这个项目中,我们将探讨如何在Android应用中添加并自定义ActionBar,包括设置返回按钮。 首先,...
郭霖是一位知名的Android开发者和作者,他在他的博客中深入解析了ActionBar的概念、用法以及实战技巧。这篇文章将基于郭霖的讲解,详细阐述ActionBar的相关知识点。 首先,我们来理解ActionBar的基本概念。...
在Android应用开发中,ActionBar是系统提供的一种顶部导航和操作区域,它通常包含应用的logo、标题、菜单项以及其他的工具栏元素。然而,系统默认的ActionBar可能无法满足所有设计需求,因此开发者需要学会如何...
在Android应用开发中,ActionBar是一个重要的组件,它位于应用程序界面的顶部,通常包含应用的logo、标题、菜单项以及操作按钮。本篇文章将深入探讨如何根据需求定制ActionBar,使其更加符合应用的设计风格,提升...
在Android应用开发中,ActionBar是一个关键组件,它位于屏幕顶部,用于显示应用程序的logo以及提供选项菜单中的项目。本篇将详细解析ActionBar的功能、使用方法及其实现过程。 ### 一、ActionBar简介 ActionBar是...