作者 【印度】B.M. Harwani,

3.4 技巧:在ActionBar中显示Action项
Android平板电脑开发秘籍
为了在ActionBar中显示Action项,需要给菜单项添加android:showAsAction属性,菜单项定义于Menu文件中。showAsAction属性决定了如何显示Action项。showAsAction属性可以是以下值。

always——在ActionBar中显示此Action项。
ifRoom——仅当空间允许时,才在ActionBar中显示此Action项。如果没有足够的空间,此项将显示在Overflow菜单中。
never——总是在Overflow菜单中显示此菜单项。要显示Overflow菜单,请按下AVD的Menu按钮或物理设备的Overflow菜单按钮。
withText——此Action项的标题将与图标(如果有的话)一起显示出来。此属性值可以与其他值组合在一起设置,中间用管道符号“|”分隔。
collapseActionView——使得与Action项关联的Action View可以折叠显示。也就是说,Action View折叠为一个正常Action项的大小。
现在通过运行一个应用程序来学习ActionBar的概念。创建一个名为ActionItemsApp的Android项目。将minSdkVersion和targetSdkVersion属性分别设为14和17。在此应用程序中,将显示两个名为Create和Update的Action项。这两个Action项将显示为ActionBar中的可点击项。可以在菜单文件activity_ action_items_app. xml(文件名由Android项目名称决定)中定义Action项。定义完两个Action项Create和Update后,菜单文件activity_action_items_app.xml应该如代码清单3-1所示。

代码清单3-1 写入菜单文件activity_action_items_app.xml的代码

<menu xmlns:android="http://schemas.android.com/apk/res/android" >
    <item android:id="@+id/create "
        android:title="Create"
        android:icon="@drawable/create"
        android:orderInCategory="0"
        android:showAsAction="ifRoom|withText" />
    <item android:id="@+id/update"
        android:title="Update"
        android:icon="@drawable/update"
        android:showAsAction="always" />
</menu>

可以看到,Action项Create被设置为ActionBar空间足够时才显示,且显示标题Create。Action项Update则设为始终显示于ActionBar中。因为要用图标来表示Create和Update项,请把图片文件create.png和update.png复制到应用程序的res/ drawable文件夹中。

现在应用程序可以运行了。不需要在activity_action_items_app.xml Layout文件和ActionItemsAppActivity.java Java Activity文件中添加任何代码。

运行此程序后,将看到两个Action项,如图3-2所示。




android开发 平板用layout_java



如果Action项只显示了图标,可以长按(按住不放)此项,由android:title属性指定的文字将会以提示信息的形式显示出来。

随着Action项数量的增加,ActionBar中能容纳得下的项将会显示为Action项,其余的会隐藏起来。只要有Action项是不可见的,ActionBar的右侧就会出现一个Overflow菜单按钮。点击这个Overflow菜单按钮后,隐藏的Action项将会就近显示出来。要看到这一现象,请在菜单文件activity_action_items_app.xml中增加Action项的数量,如代码清 单3-2所示。

代码清单3-2 写入菜单文件activity_action_items_app.xml的代码

<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@+id/create"
        android:title="Create"
        android:icon="@drawable/create"
        android:orderInCategory="0"
        android:showAsAction="ifRoom|withText" />
    <item android:id="@+id/update"
        android:title="Update"
        android:icon="@drawable/update"
        android:showAsAction="always" />
    <item android:id="@+id/list_rows"
        android:title="List Rows"
        android:showAsAction="ifRoom" />
    <item android:id="@+id/search_row"
        android:title="Search"
        android:showAsAction="ifRoom" />
    <item android:id="@+id/delete_row"
        android:title="Delete"
        android:showAsAction="never" />
    <item android:id="@+id/insert_row"
        android:title="Insert"
        android:showAsAction="always" />
</menu>

可以看到,这里向ActionBar里添加了4个Action项:List Rows、Search、Delete和Insert。List Row和Search被设为ActionBar空间足够时才显示;否则它们就在Overflow菜单里显示。Delete项将不会显示在ActionBar中,即使有足够的空间也不显示,而是始终显示在Overflow菜单中。Insert项被设置为一直显示在ActionBar中。

运行此应用程序后,会发现6个Action项中的4个在ActionBar中显示出来了,Overflow菜单按钮显示在右侧。ActionBar中可见的Action项是Create、Update、List Rows和Insert(参见图3-3上)。在点击Overflow菜单按钮之后,隐藏的Action项Search和Delete将会显示在Overflow菜单中(见图3-3下)。


android开发 平板用layout_android开发 平板用layout_02



showAsAction属性的collapseActionView值将在“在ActionBar中显示Action View”一节中解释。