18.android:uiOptions
该属性用于开启Activity UI附加的扩展导航栏。在配置这个属性时,可供选择的值必须是下表所示的两个值中的一个。
值 | 描述 |
none | 关闭扩展栏。如果没有配置android:uiOptions属性,此为默认值 |
splitActionBarWhenNarrow | 当在横向空间受到限制时,比如当手机处于纵向模式,在屏幕底部添加一个状态栏来显示ActionBar中的动作项。只有少数的Action项会出现在动作栏中。操作栏将被分成顶部导航部分和用于动作项的底部栏。这就保证了有一个合理数量的空间可用。 |
需要说明的是,android:uiOption属性是自Android4.0以后才提供的。因此,在需要使用该属性的时候,孙弱保证使用Android4.0以后的SDK(API14)
下面举例说明如何使用这个属性。
①就拿刚刚新建的AppilcationTest项目来说,在Androidmanifest.xml中的<application>节点中加入如下代码:
android:uiOptions="splitActionBarWhenNarrow"
②在工程的/res.menu目录下新建一个菜单配置文件my_menu_cfg.xml。在该文件中配置如下代码:
<menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+id/item1" android:title="show_item1" android:showAsAction="always|withText" android:icon="@drawable/abc_ic_menu_copy_mtrl_am_alpha"></item> <item android:id="@+id/item2" android:title="show_item2"></item> <item android:id="@+id/item3" android:title="show_item3" android:showAsAction="always|withText" android:icon="@drawable/abc_ic_menu_selectall_mtrl_alpha"></item> </menu>
需要注意的是,我们把要显示为Action项的菜单项的android:showAsAction设置为always。
③新建一个Activity类,名为UIOptionActivity,实现onCreateOptionsMenu()方法加载my_menu_cfg.xml菜单布局,代码如下:
public class UIOptionActivity extends Activity{ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.my_menu_cfg,menu); return super.onCreateOptionsMenu(menu); } }
④编译运行项目,运行结果如下图。
可以发现,屏幕底部出现了状态栏。
这样刚刚配置的android:showAsAction的项目就显示出来了,剩余部分包含在框中的超出菜单里,单击它时才会显示出来。大家可以自行尝试一下去掉这个属性的效果。
在不需要操作栏的时候,只需要把andriod:uiOption设置为none或者onCreateOptionmenu()方法空实现。
19.android:vmSafeMode
此属性用于指示虚拟机是否在安全模式下运行,它是一个布尔值,当没有配置它的时候,其默认值为false。示例代码如下:
if(sa.getBoolean(com.android.internal.R.styleable.AndroidManifestApplication_vmsafeMode,false)){ ai.flags|=ApplicationInfo.FLAG_VM_SAFE_MODE; }
20.android:largeHeap
此属性指示应用程序是否使用一个比较大的堆创建,它是一个布尔值,在没有配置的情况下,它的默认值是false,示例代码如下:
if(sa.getBoolean(com.android.internal.R.styleable.AndroidManifestApplication_largeHeap,false)){ ai.flags|=ApplicationInfo.FLAG_LARGE_HEAP; }
至此,我们介绍完了<application>节点支持的所有节点的用法,代码实现,含义及用法。在开发应用程序的时候,开发者应该根据具体需求有选择的使用这些属性,以使应用程序更高效地运行。
要注意的是,作为应用程序的根节点,<application>节点必须包括在<manifest>节点中。而<application>节点本身还包括<activity>,<activity-alias>,<service>,<receiver>,<provider>和<uses-library>这几个节点。