您的位置:首页 > 移动开发 > Android开发

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

2013-02-28 20:12 676 查看
上一节所讲内容为ActionBar如何添加Tabs标签和下拉导航。

一、添加标签 Tabs

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

private class MyTabListener implements ActionBar.TabListener {   
      private TabContentFragment mFragment;   
       public TabListener(TabContentFragment fragment) {   
       mFragment = fragment;   
      }  @Override  
      public void onTabSelected(Tab tab, FragmentTransaction ft) {   
      ft.add(R.id.fragment_content, mFragment, null);   
      }   
     @Override  
     public void onTabUnselected(Tab tab, FragmentTransaction ft) {   
     ft.remove(mFragment);   
     }   
     @Override  
     public void onTabReselected(Tab tab, FragmentTransaction ft) {   
     }   
      
    }
接下来我们创建ActionBar在Activity中,代码如下:

@Override  
    protected void onCreate(Bundle savedInstanceState) {   
    super.onCreate(savedInstanceState);   
    setContentView(R.layout.main);   
    final ActionBar actionBar = getActionBar(); //提示getActionBar方法一定在setContentView后面   
    actionBar.setNavigationMode(ActionBar.N***IGATION_MODE_TABS);   
    actionBar.setDisplayOptions(0, ActionBar.DISPLAY_SHOW_TITLE);   
    Fragment artistsFragment = new ArtistsFragment();   
    actionBar.addTab(actionBar.newTab().setText(R.string.tab_artists).setTabListener(new TabListener(artistsFragment)));   
    Fragment albumsFragment = new AlbumsFragment();   
    actionBar.addTab(actionBar.newTab().setText(R.string.tab_albums).setTabListener(new TabListener(albumsFragment)));   
    }
二、添加下拉导航 Drop-down Navigation

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

ActionBar actionBar = getActionBar();   
    actionBar.setNavigationMode(ActionBar.N***IGATION_MODE_LIST);   
    actionBar.setListNavigationCallbacks(mSpinnerAdapter, mNavigationCallback);
上面我们通过setListNavigationCallbacks方法绑定一个SpinnerAdapter控件,具体的OnNavigationListener代码示例为:

mOnNavigationListener = new OnNavigationListener() {   
     String[] strings = getResources().getStringArray(R.array.action_list);   
      @Override  
      public boolean onNavigationItemSelected(int position, long itemId) {   
      ListContentFragment newFragment = new ListContentFragment();   
      FragmentTransaction ft = openFragmentTransaction();   
      ft.replace(R.id.fragment_container, newFragment, strings[position]);   
      ft.commit();   
      return true;   
    }   
      
    };
而其中的ListContentFragment的代码为:

public class ListContentFragment extends Fragment {   
    private String mText;   
      
    @Override  
    public void onAttach(Activity activity) {   
    super.onAttach(activity);   
    mText = getTag();   
    }   
      
    @Override  
    public View onCreateView(LayoutInflater inflater, ViewGroup container,   
    Bundle savedInstanceState) {   
    TextView text = new TextView(getActivity());   
    text.setText(mText);   
    return text;   
    }   
    }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐