ActionBar的使用

1.修改图标


  默认的,ActionBar使用Activity的android:icon属性,还有一致的android:label属性。

  第二种方式就是使用android:logo属性。不像方方正正的icon,logo的图像不会有任何宽度限制。logo图像典型的给你的APP提供品牌。比较好的方式:当你有Logo的时候,你可以隐藏label。

  当Activity既指定了android:icon还指定了android:logo,logo会覆盖在icon之上。程序中可以设置一下属性:

actionBar.setDisplayUseLogoEnabled(displayLogo)。

 

  如果两个图标都要隐藏的话,可以通过在程序中设置一下属性:

actionBar.setDisplayShowHomeEnabled(false); 

  注意:APP的icon/logo典型的被用来作为一个快捷的导航方式到main activity,通常你至少得保留一个。

 

2.修改文本标签


  修改文本内容,使用setTitle和setSubTitle。一个主标题,一个子标题。

actionBar.setSubtitle(“Inbox”); 
actionBar.setTitle(“Label:important”);

 

  隐藏文本标签:

getActionBar().setDisplayShowTitleEnabled(false);

 

3.控制导航行为


  App icons:使用icon或者logo导航, 典型的导航到APP的主界面。也可以通过配置Icon去代表移动到上一级的意思。Icon导航可以用来导航Activity栈。

  Tabs和下拉列表:ActionBar支持内嵌的Tabs和下拉列表。Tabs和下拉列表被用来作为Activity内Fragments的转换。

 

3.1.App icons

  在大多数情况,APP的icon应该被作为快捷方式,导航到主Activtiy,典型的说也就是Activtiy栈的根。为了使APP icon可以被点击,你必须调用ActionBar的setHomeButtonEnabled方法。

  点击icon会被系统作为一个特殊的Menu Item的点击。所以可以在onOptionsItemSelected方法中去监听,它的id为android.R.id.home。

 

  传统的,Android APP在activity之间跳转完之后,可以使用返回按钮回退。为了也支持这种模式,可以配置app icon去提供“向上”导航。 

//当向上导航的时候,通常使用icon而不是logo
actionBar.setDisplayUseLogoEnabled(false);
actionBar.setDisplayHomeAsUpEnabled(true); 

  向上导航在样子上就多了个箭头,跟setHomeButtonEnabled本质上相同,都会被作为特殊的MenuItem,id是android.R.id.home,也需要在onOptionsItemSelected去监听。

 

3.2.导航Tabs

  ActionBar提供导航TAB和下拉列表。值得注意的是,一次只能激活其中的一种导航。这些导航选择项被设计用来与Fragments更亲近。通过替换可见的Fragments从而达到修改Activity内容的目的。导航TAB是TabWidget的替代品。

 

配置Tabs:

  通常情况下,使用Tabs会隐藏文本标签。

actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); 
actionBar.setDisplayShowTitleEnabled(false);


//TabsDemo:
Tab tabOne = actionBar.newTab();
tabOne.setText(“First Tab”)
       .setIcon(R.drawable.ic_launcher)
       .setContentDescription(“Tab the First”)
       .setTabListener(
           newTabListener<MyFragment>
              (this, R.id.fragmentContainer, MyFragment.class));
actionBar.addTab(tabOne);

 

  此外,你还可以使用setCustomView方法,自定义Tab布局,代替标准的文字+图片模式。注意:setContentDescription方法是在Android 4.0(API 14)引入的,用来提供更细节的描述。

 

  Tab的转换是由TabListener来操控的,当tab被选择、未选择、重新选择时,允许你创建Fragment事务作为回应。

public static class TabListener<T extends Fragment>
                   implements ActionBar.TabListener {
  private MyFragment fragment;
    private Activity activity;
  private Class<T> fragmentClass;
  private int fragmentContainer;
  public TabListener(Activity activity, int fragmentContainer,
                   Class<T> fragmentClass) {
    this.activity = activity; 
    this.fragmentContainer = fragmentContainer; 
    this.fragmentClass = fragmentClass; 
    }
 
  // Called when a new tab has been selected 
  public void onTabSelected(Tab tab, FragmentTransaction ft) { 
    if(fragment ==null) { 
      String fragmentName = fragmentClass.getName(); 
      fragment = 
        (MyFragment)Fragment.instantiate(activity, fragmentName); 
      ft.add(fragmentContainer, fragment,null); 
      fragment.setFragmentText(tab.getText()); 
    }else{ 
      ft.attach(fragment); 
    }
  }
 
  // Called on the currently selected tab when a different tag is selected.
  public void onTabUnselected(Tab tab, FragmentTransaction ft) {
    if(fragment !=null) { 
      ft.detach(fragment); 
    } 
  }
 
  // Called when the selected tab is selected. 
  public void onTabReselected(Tab tab, FragmentTransaction ft) { 
    // TODO React to a selected tab being selected again. 
  }
}

 

3.3.下拉列表导航

配置下拉列表:

  下拉列表就像一个Spinner。数据源+Adapter

actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST)

 

//Demo:
  actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
  ArrayAdapter dropDownAdapter =
              ArrayAdapter.createFromResource(this,
                    R.array.my_dropdown_values,
                    android.R.layout.simple_list_item_1);
 
  actionBar.setListNavigationCallbacks(dropDownAdapter,
                  newOnNavigationListener() {
    public boolean onNavigationItemSelected(int itemPosition,
                            long itemId) {
      // TODO: 点击处理事件
      return true;
    }
});

 

3.4.自定义导航View

  actionBar.setDisplayShowCustomEnabled(true); 
  actionBar.setCustomView(R.layout.my_custom_navigation);

 

4.Splite ActionBar模式

  Splite ActionBar模式:顶部放不下的action,帮忙放在底部。

<activity
    android:label=”My Activity”
    android:name=”.ActionBarActivity”
    android:logo=”@drawable/ic_launcher”
    android:uiOptions=”splitActionBarWhenNarrow”>


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值