public abstract class ActionProvider
extends Object
java.lang.Object | |
↳ | android.view.ActionProvider |
Known Direct Subclasses |
ActionProvider在单个组件中定义丰富的菜单交互。 ActionProvider可以生成操作视图以供在操作栏中使用,动态填充MenuItem的子菜单以及处理默认菜单项调用。
可以为MenuItem
选择性地指定MenuItem
并负责创建出现在ActionBar
中的操作视图,以代替栏中的简单按钮。 当菜单项以不允许自定义操作视图的方式呈现时(例如在溢出菜单中),ActionProvider可以执行默认操作。
有两种方法可以使用操作提供者:
MenuItem
directly by calling setActionProvider(ActionProvider)
.
<item android:id="@+id/my_menu_item"
android:title="Title"
android:icon="@drawable/my_menu_item_icon"
android:showAsAction="ifRoom"
android:actionProviderClass="foo.bar.SomeActionProvider" />
Nested classes |
|
---|---|
interface |
ActionProvider.VisibilityListener 监听 |
Public constructors |
|
---|---|
ActionProvider(Context context) 创建一个新的实例。 |
Public methods |
|
---|---|
boolean |
hasSubMenu() 确定此ActionProvider是否具有与其关联的子菜单。 |
boolean |
isVisible() 如果 |
abstract View |
onCreateActionView() 此方法在API级别16中已弃用。请使用 |
View |
onCreateActionView(MenuItem forItem) 由Android框架调用的工厂方法来创建新的操作视图。 |
boolean |
onPerformDefaultAction() 执行可选的默认操作。 |
void |
onPrepareSubMenu(SubMenu subMenu) 调用以为由此ActionProvider支持的菜单项准备相关的子菜单。 |
boolean |
overridesItemVisibility() 这种方法的结果,判断是否 |
void |
refreshVisibility() 如果此ActionProvider与菜单中的项目关联,请根据 |
void |
setVisibilityListener(ActionProvider.VisibilityListener listener) 设置一个侦听器,当这个ActionProvider被覆盖的可见性发生变化时通知它。 |
Inherited methods |
|
---|---|
From class java.lang.Object
|
ActionProvider (Context context)
创建一个新的实例。 ActionProvider类应始终实现一个构造函数,该构造函数从菜单XML中获取一个用于膨胀的Context参数。
Parameters | |
---|---|
context |
Context : Context for accessing resources. |
boolean hasSubMenu ()
确定此ActionProvider是否具有与其关联的子菜单。
关联的子菜单将在操作视图不显示时显示。 在向onPrepareSubMenu(SubMenu)
的呼叫onPerformDefaultAction()
以及向用户显示子菜单之前,此提供者实例将接收到对onPrepareSubMenu(SubMenu)
的呼叫。
Returns | |
---|---|
boolean |
true if the item backed by this provider should have an associated submenu |
boolean isVisible ()
如果 overridesItemVisibility()
返回true,则此方法的返回值将有助于确定此ActionProvider绑定的 MenuItem
的可见性。
如果MenuItem的可见性被应用程序显式设置为false,则即使此方法返回true,MenuItem也不会显示。
Returns | |
---|---|
boolean |
true if the MenuItem this ActionProvider is bound to is visible, false if it is invisible. The default implementation returns true. |
View onCreateActionView ()
此方法在API级别16中已被弃用。
使用onCreateActionView(MenuItem)
由Android框架调用的工厂方法来创建新的操作视图。
此方法已被弃用,以支持onCreateActionView(MenuItem)
。 希望支持API 16之前的平台版本的新应用程序也应实现此方法以返回有效的操作视图。
Returns | |
---|---|
View |
A new action view. |
View onCreateActionView (MenuItem forItem)
由Android框架调用的工厂方法来创建新的操作视图。 此方法为给定的MenuItem返回一个新的操作视图。
如果您的ActionProvider实现覆盖已弃用的无参数过载onCreateActionView()
,建议您为运行API 16或更高版本的设备重写此方法,但可选。 默认实现调用onCreateActionView()
以与为较旧平台版本编写的应用程序兼容。
Parameters | |
---|---|
forItem |
MenuItem : MenuItem to create the action view for |
Returns | |
---|---|
View |
the new action view |
boolean onPerformDefaultAction ()
执行可选的默认操作。
对于放置在未显示为菜单项的操作提供者的情况,如果先前用于处理菜单选择的回调处理了该事件,则调用此方法。
菜单项选择按以下顺序处理:
MenuItem.OnMenuItemClickListener.onMenuItemClick
. Activity.onOptionsItemSelected(MenuItem)
Fragment.onOptionsItemSelected(MenuItem)
Intent
set via MenuItem.setIntent(android.content.Intent)
默认实现不执行任何操作并返回false。
Returns | |
---|---|
boolean |
void onPrepareSubMenu (SubMenu subMenu)
调用以为由此ActionProvider支持的菜单项准备相关的子菜单。
如果hasSubMenu()
返回true,则在选择菜单项以准备用于呈现给用户的子菜单时将调用此方法。 应用程序可以使用它在显示之前创建或更改子菜单内容。
Parameters | |
---|---|
subMenu |
SubMenu : Submenu that will be displayed |
boolean overridesItemVisibility ()
这种方法的结果,判断是否 isVisible()
将由使用 MenuItem
此ActionProvider必然会有助于确定其可见性。
Returns | |
---|---|
boolean |
true if this ActionProvider overrides the visibility of the MenuItem it is bound to, false otherwise. The default implementation returns false. |
也可以看看:
void refreshVisibility ()
如果此ActionProvider与菜单中的项目相关联,请根据overridesItemVisibility()
和isVisible()
刷新该项目的可见性。 如果overridesItemVisibility()
返回false,则此调用将不起作用。
void setVisibilityListener (ActionProvider.VisibilityListener listener)
设置一个侦听器,当这个ActionProvider被覆盖的可见性发生变化时通知它。 这应该只能由MenuItem实现使用。
Parameters | |
---|---|
listener |
ActionProvider.VisibilityListener : listener to set |