您的位置:首页 > 产品设计 > UI/UE

[android ui]ActionBar的Action图标区添加

2014-04-23 14:29 465 查看

ActionBar的隐藏和现实

ActionBar bar = getActionBar();

bar.hide(); //隐藏Action Bar

bar.show(); //显示Action Bar

ActionBar的action图标区

ActionBar的右侧就是action图标区域,如下图所示



这是ActionBar的menu区域,作为options menu的一部分,选择部分的菜单项在action bar中显示。我们先看看源代码,没有什么特别。小例子是在上一学习的例子上进行添加,直接采用继承方式。

public class ActionAreaTestCase2 extends HomePressTestCase1{

@Override

public boolean onCreateOptionsMenu(Menu menu) {

MenuInflater inflater = getMenuInflater();

inflater.inflate(R.menu.bar, menu);

return true;

}

@Override

public boolean onOptionsItemSelected(MenuItem item) {

showInfo("select : " + item.getTitle());

return super.onOptionsItemSelected(item);

}

}

关键看看R.menu.bar的xml是如何设置。

<?xml version="1.0" encoding="utf-8"?>

<menu xmlns:android="http://schemas.android.com/apk/res/android" >

<item android:id="@+id/menu_action_icon1"

android:title="Action1"

android:icon="@drawable/creep001"

android:showAsAction="ifRoom"/> <!-- 与一般的item相比,增加了showAsAction的设置,表明在action bar中显示的情况,除了ifRoom,还有always、never、withText。也可以在代码中通过menuItem.setShowAsAction(int)来实现 -->

<item android:id="@+id/menu_action_icon2"

android:title="Action2"

android:icon="@drawable/creep002"

android:showAsAction="ifRoom"/>

<item android:id="@+id/menu_action_icon3"

android:title="Action3"

android:icon="@drawable/creep003"

android:showAsAction="ifRoom"/>

... ...

</menu>

如果我们要求在action bar显示的菜单项太多,超过action bar的空间时,则在普通的OptionsMenu位置显示,例如我们设置了6个菜单项,属性均有:android:showAsAction="ifRoom",显示如下:



如果在menu的xml文件中,有些属性没有设置为showAsAction,则这些item按常规的菜单方式显示。如下图:Normal的item是普通的菜单项:



如果我们没有设置图标,只设置了title,则显示文字,xml片段如下:

<?xml version="1.0" encoding="utf-8"?>

<menu xmlns:android="http://schemas.android.com/apk/res/android" >

<item android:id="@+id/menu_action_icon1"

android:title="Action1"

android:showAsAction="ifRoom"/> <!-- 没有icon的例子 -->

<item android:id="@+id/menu_action_icon2"

android:title="Action2"

android:icon="@drawable/creep002"

android:showAsAction="ifRoom|withText"/> <!-- 同时显示icon和文字的例子 -->

… …

</menu>

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: