`
irtutsk
  • 浏览: 17789 次
社区版块
存档分类
最新评论

ActionBar菜单的特殊用法

阅读更多

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溢出菜单颜色修改

    在某些设计风格或者品牌规范中,可能需要对ActionBar的溢出菜单(Overflow Menu)的颜色进行自定义,以符合整体UI的设计需求。本篇文章将详细介绍如何修改ActionBar的溢出菜单颜色。 首先,我们要理解溢出菜单的...

    ActionBar中的下拉菜单操作

    本文将深入探讨如何在ActionBar中实现下拉菜单功能,这在很多应用中都是一个常见的交互设计。 首先,我们需要理解ActionBar的基本概念。ActionBar是Android 3.0(API级别11)引入的一个UI元素,它为用户提供了一种...

    Android 弹无虚发之第二弹:Android ActionBar 的其它用法(搜索、分享、隐藏复杂布局,模仿Google Play,微信)

    本文将深入探讨Android ActionBar的其他用法,包括实现搜索功能、分享功能、隐藏复杂布局以及如何模仿Google Play和微信的设计,以提升用户体验。 首先,让我们谈谈搜索功能。在ActionBar中集成搜索视图(Action...

    ActionBar分页菜单

    本篇文章将详细探讨如何通过`ActionBar`来实现分页菜单,并结合`ActivityGroup`和`TextView`布局,实现动态滚动效果。 首先,`ActionBar`的分页功能通常借助`TabHost`或`ViewPager`来完成。`TabHost`在早期版本的...

    Android ActionBar搜索功能用法详解

    本文实例讲述了Android ActionBar搜索功能用法。分享给大家供大家参考,具体如下: 使用ActionBar SearchView时的注意点: 首先要吐槽一下Android的官方Guide文档 ,关于用法讲得不明确,可能是一直没更新的原因吧。...

    actionbar中增加setting菜单 自定义

    本教程将详细讲解如何在`ActionBar`中增加一个自定义的`Setting`菜单,并使用`PopupWindow`来实现这一功能。 首先,我们需要了解`ActionBar`的基本使用。在Android API 11及以上版本,我们可以通过`...

    低版本兼容的ActionBar(一)各种设置和添加菜单项

    本篇文章将详细讲解如何在低版本Android系统上实现和设置ActionBar,以及如何添加菜单项。 首先,为了在低版本Android设备上使用ActionBar,我们需要引入appcompat-v7库。在项目的build.gradle文件中添加以下依赖:...

    ActionBar的自定义风格 高级用法

    本文将深入探讨`ActionBar`的自定义风格和高级用法,旨在帮助开发者提升应用程序的用户体验和视觉效果。 一、`ActionBar`基础 `ActionBar`是Android 3.0(API级别11)引入的,它提供了许多功能,如显示应用图标、...

    actionbar demo

    通过阅读这篇文章,开发者可以了解到ActionBar的基本用法以及一些高级特性。 【标签】"actionbar demo" 说明这个项目专注于展示和练习ActionBar的使用,对于初学者来说,这是一个很好的实践平台,可以加深对Android...

    android4.0 actionbar API

    - **未直接显示的 Action 项**:未出现在 ActionBar 上的菜单项将被归类到一个名为“更多…”的下拉菜单中。 - **Tabs 功能**:支持在多个 Fragments 间通过标签进行快速切换。 - **下拉列表**:提供一种简单的导航...

    ActionBar的基本功能

    在这个“MyActionBar”示例中,我们将深入探讨ActionBar的基础知识和用法。** 1. **基本结构与布局** - ActionBar通常位于Activity的顶部,展示应用的标识和主要操作。 - 它由几个部分组成:应用图标、活动标题、...

    android仿微信6.0底部滑动菜单栏+导航栏,ViewPager+RadioGroup+ActionBar

    在Android应用开发中,创建一个类似微信6.0版本的底部滑动菜单栏与导航栏是一种常见的需求。这个项目利用了ViewPager、RadioGroup和ActionBar等组件来实现这一功能。下面将详细讲解这些知识点。 首先,`ViewPager`...

    Android ActionBar学习源代码

    8. **使用ActionBar的SplitActionBar**:在竖屏模式下,当ActionBar无法容纳所有菜单项时,部分菜单项会移到屏幕底部,形成Split ActionBar。 9. **Overflow Menu**:对于没有物理菜单键的设备,ActionBar中的三个...

    自定义 actionbar 和 修改actionbar 样式

    在Android应用开发中,ActionBar是一个重要的组件,它位于应用程序界面的顶部,通常包含应用的logo、标题、菜单项以及其他的导航元素。对于Android 3.0以下版本,原生的ActionBar功能相对较弱,但开发者可以通过...

    android actionbar简单实例

    这个“android actionbar简单实例”是针对Android新手或者开发者想要了解和掌握ActionBar基本用法的一个实践项目。在这个项目中,我们将探讨如何在Android应用中添加并自定义ActionBar,包括设置返回按钮。 首先,...

    郭霖所写的关于ActionBar解析和实战博客中的源码

    郭霖是一位知名的Android开发者和作者,他在他的博客中深入解析了ActionBar的概念、用法以及实战技巧。这篇文章将基于郭霖的讲解,详细阐述ActionBar的相关知识点。 首先,我们来理解ActionBar的基本概念。...

    Android自定义ActionBar示例

    在Android应用开发中,ActionBar是系统提供的一种顶部导航和操作区域,它通常包含应用的logo、标题、菜单项以及其他的工具栏元素。然而,系统默认的ActionBar可能无法满足所有设计需求,因此开发者需要学会如何...

    ActionBar定制

    在Android应用开发中,ActionBar是一个重要的组件,它位于应用程序界面的顶部,通常包含应用的logo、标题、菜单项以及操作按钮。本篇文章将深入探讨如何根据需求定制ActionBar,使其更加符合应用的设计风格,提升...

    Android--ActionBar

    在Android应用开发中,ActionBar是一个关键组件,它位于屏幕顶部,用于显示应用程序的logo以及提供选项菜单中的项目。本篇将详细解析ActionBar的功能、使用方法及其实现过程。 ### 一、ActionBar简介 ActionBar是...

Global site tag (gtag.js) - Google Analytics