一.添加标签 Tabs

  在ActionBar中实现标签页可以实现android.app.ActionBar.TabListener ,重写onTabSelected、onTabUnselected和onTabReselected方法来关联Fragment。代码如下:

  1. private class MyTabListener implements ActionBar.TabListener {
  2. private TabContentFragment mFragment;
  3. public TabListener(TabContentFragment fragment) {
  4. mFragment = fragment;
  5. }  @Override
  6. public void onTabSelected(Tab tab, FragmentTransaction ft) {
  7. ft.add(R.id.fragment_content, mFragment, null);
  8. }
  9. @Override
  10. public void onTabUnselected(Tab tab, FragmentTransaction ft) {
  11. ft.remove(mFragment);
  12. }
  13. @Override
  14. public void onTabReselected(Tab tab, FragmentTransaction ft) {
  15. }
  16. }

接下来我们创建ActionBar在Activity中,代码如下;

  1. <strong>@Override
  2. protected void onCreate(Bundle savedInstanceState) {
  3. super.onCreate(savedInstanceState);
  4. setContentView(R.layout.main);
  5. final ActionBar actionBar = getActionBar(); //提示getActionBar方法一定在setContentView后面
  6. actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
  7. actionBar.setDisplayOptions(0, ActionBar.DISPLAY_SHOW_TITLE);
  8. Fragment artistsFragment = new ArtistsFragment();
  9. actionBar.addTab(actionBar.newTab().setText(R.string.tab_artists).setTabListener(new TabListener(artistsFragment)));
  10. Fragment albumsFragment = new AlbumsFragment();
  11. actionBar.addTab(actionBar.newTab().setText(R.string.tab_albums).setTabListener(new TabListener(albumsFragment)));
  12. }</strong>

二. 添加下拉导航 Drop-down Navigation:

创建一个SpinnerAdapter提供下拉选项,和Tab方式不同的是Drop-down只需要修改下setNavigationMode的模式,将ActionBar.NAVIGATION_MODE_TABS改为ActionBar.NAVIGATION_MODE_LIST,最终改进后的代码为

  1. <strong>ActionBar actionBar = getActionBar();
  2. actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
  3. actionBar.setListNavigationCallbacks(mSpinnerAdapter, mNavigationCallback);</strong>

上面我们通过setListNavigationCallbacks方法绑定一个SpinnerAdapter控件,具体的OnNavigationListener代码示例为;

  1. <strong> mOnNavigationListener = new OnNavigationListener() {
  2. String[] strings = getResources().getStringArray(R.array.action_list);
  3. @Override
  4. public boolean onNavigationItemSelected(int position, long itemId) {
  5. ListContentFragment newFragment = new ListContentFragment();
  6. FragmentTransaction ft = openFragmentTransaction();
  7. ft.replace(R.id.fragment_container, newFragment, strings[position]);
  8. ft.commit();
  9. return true;
  10. }
  11. };</strong>

而其中的ListContentFragment的代码为:

    1. public class ListContentFragment extends Fragment {
    2. private String mText;
    3. @Override
    4. public void onAttach(Activity activity) {
    5. super.onAttach(activity);
    6. mText = getTag();
    7. }
    8. @Override
    9. public View onCreateView(LayoutInflater inflater, ViewGroup container,
    10. Bundle savedInstanceState) {
    11. TextView text = new TextView(getActivity());
    12. text.setText(mText);
    13. return text;
    14. }
    15. }

【JAVA】鉴于plaincopy

Android ActionBar详解(二):ActionBar实现Tabs标签以及下拉导航的更多相关文章

  1. 详解Android ActionBar之二:ActionBar添加Tabs标签和下拉导航

    本节主要讲解ActionBar如何添加Tabs标签和下拉导航. 一.添加标签 Tabs 在ActionBar中实现标签页可以实现android.app.ActionBar.TabListener ,重 ...

  2. Android ActionBar详解(三)--->ActionBar的Home导航功能

    FirstActivity如下: package cc.testsimpleactionbar2; import android.os.Bundle; import android.app.Activ ...

  3. Android ActionBar详解(二)--->使用ActionBar显示选项菜单

    MainActivity如下: package cc.testsimpleactionbar1; import android.os.Bundle; import android.app.Activi ...

  4. Android Fragment详解(二):Fragment创建及其生命周期

    Fragments的生命周期 每一个fragments 都有自己的一套生命周期回调方法和处理自己的用户输入事件. 对应生命周期可参考下图: 创建片元(Creating a Fragment) To c ...

  5. (转)android Fragments详解二:创建Fragment

    创建Fragment 要创建fragment,必须从Fragment或Fragment的派生类派生出一个类.Fragment的代码写起来有些像activity.它具有跟activity一样的回调方法, ...

  6. Android Loader详解二:使用加载器

    一个使用装载器的应用会典型的包含如下组件: 一个Activity或Fragment. 一个LoaderManager的实例. 一个加载被ContentProvider所支持的数据的CursorLoad ...

  7. Android ActionBar详解

    Android ActionBar详解 分类: Android2014-04-30 15:23 1094人阅读 评论(0) 收藏 举报 androidActionBar   目录(?)[+]   第4 ...

  8. Android UI开发详解之ActionBar .

    在Android3.0之后,Google对UI导航设计上进行了一系列的改革,其中有一个非常好用的新功能就是引入的ActionBar,他用于取代3.0之前的标题栏,并提供更为丰富的导航效果. 一.添加A ...

  9. Android 布局学习之——Layout(布局)详解二(常见布局和布局参数)

    [Android布局学习系列]   1.Android 布局学习之——Layout(布局)详解一   2.Android 布局学习之——Layout(布局)详解二(常见布局和布局参数)   3.And ...

随机推荐

  1. CSharp命名风格

    1.大小写约定 为了区分一个标识符中的多个单词,把标识符中的每个单词的首字母大写.不要用下划线来区分单词,或者在标识符中任何地方使用下划线,有两种方式适合大写标识符的字母: PascalCasing( ...

  2. HTML、CSS、JS、PHP 的学习顺序~(零基础初学者)

    如果你有耐心坚持一年以上的话, 我会推荐HTML->CSS->JS->PHP的顺序来学习. 1. HTML学习:首先学习HTML,HTML作为标记语言是非常容易学的,把w3schoo ...

  3. log4net截取配置错误信息,(验证配置信息是否配置正确)

    在</system.web>之后 <!--log4错误日志配置:开始--> <system.diagnostics> <trace autoflush=&qu ...

  4. ORACLE基本SQL语句-用户及建表篇

    一.用户相关SQL语句 /*新建用户*/create user ; 说明:SA用户名,2013密码 /*授权connect,resource给用户sa*/grant connect,resource ...

  5. 去除input[type=number]最右边的spinners(默认加减符号)

    // 去掉input[type=number]默认的加减号 input[type='number'] { -moz-appearance:textfield; } input[type=number] ...

  6. MongoDB 介绍及Windows下安装

    一.MongoDB简介 MongoDB是一个高性能,开源,无模式的文档型数据库,是当前NoSql数据库中比较热门的一种.它在许多场景下可用于替代传统的关系型数据库或键/值存储方式.Mongo使用C++ ...

  7. 各种位置和高度计算:.position()、.offset()、.outerHeight()、.scrollTop、.scrollHeight、.clientHeight

    1..position()和.offset() jquery的.position()获取相对于最近的position为relative或absolute的父元素的偏移,返回.position().le ...

  8. flash里面调用js

    在flash里面直接调用js 用这个:ExternalInterface.call("test");  test是函数名

  9. PHP扩展开发(6) - VS2012下strncasecmp和fopen函数warning

    1. fopen   warning C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s i ...

  10. sublime text3 安装package control

    20141104日更新的安装代码为 import urllib.request,os,hashlib; h = '7183a2d3e96f11eeadd761d777e62404' + 'e330c6 ...